#include "Scarf.h"
#include <iostream>

Scarf::Scarf(const CvSize size)
{
  // Pre-allocate all the memory we need
  m_W = size.width;
  m_H = size.height;
  m_upright = cvCreateImage(cvSize(m_W+1,m_H+1), IPL_DEPTH_32S, 1);
  m_source = cvCreateImageHeader(cvSize(m_W,m_H), IPL_DEPTH_8U, 1);
}

Scarf::Scarf(const CVD::ImageRef size)
{
  // Pre-allocate all the memory we need
  m_W = size.x;
  m_H = size.y;
  m_upright = cvCreateImage(cvSize(m_W+1,m_H+1), IPL_DEPTH_32S, 1);
  m_source = cvCreateImageHeader(cvSize(m_W,m_H), IPL_DEPTH_8U, 1);
}

Scarf::~Scarf()
{
  cvReleaseImage(&m_upright);
  cvReleaseImageHeader(&m_source);
}

void Scarf::LoadImage(const IplImage* source)
{
  cvIntegral(source, m_upright, NULL, NULL);
}

void Scarf::LoadImage(CVD::Image<CVD::byte> &source)
{
  cvSetData(m_source, source.data(), source.row_stride());
  cvIntegral(m_source, m_upright, NULL, NULL);
}

inline void Scarf::ZeroOrientation()
{
  memset(ori_x, 0, sizeof(ori_x));
  memset(ori_y, 0, sizeof(ori_y));
}

bool Scarf::DescribePoint(const int x, const int y, const int scale, uint8_t descriptor[64])
{
  float rrx, rry, len=0, norm;
  float cdx=0, cdy=0, cmdx=0, cmdy=0;
  float idx, idy, imdx, imdy, odx, ody, omdx, omdy;
  int count=0, ori_bin, sector_start;

  switch (scale) {
    case 2: DescriptorResponsesGen2(x,y); break;
    case 3: DescriptorResponsesGen3(x,y); break;
    case 4: DescriptorResponsesGen4(x,y); break;
    case 5: DescriptorResponsesGen5(x,y); break;
    case 6: DescriptorResponsesGen6(x,y); break;
    case 7: DescriptorResponsesGen7(x,y); break;
    case 8: DescriptorResponsesGen8(x,y); break;
    case 9: DescriptorResponsesGen9(x,y); break;
    case 10: DescriptorResponsesGen10(x,y); break;
    case 11: DescriptorResponsesGen11(x,y); break;
    case 12: DescriptorResponsesGen12(x,y); break;
    case 16: DescriptorResponsesGen16(x,y); break;
    default: return false;
  }

  // initial values for calculating the dominant direction 
  float sumX = ori_x[0]+ori_x[1]+ori_x[2]+ori_x[3]+ori_x[4]+ori_x[5]+ori_x[6]+ori_x[7]+ori_x[8]+ori_x[9]+ori_x[10]+ori_x[11];
  float sumY = ori_y[0]+ori_y[1]+ori_y[2]+ori_y[3]+ori_y[4]+ori_y[5]+ori_y[6]+ori_y[7]+ori_y[8]+ori_y[9]+ori_y[10]+ori_y[11];
  float maxX = sumX, maxY = sumY, maxNorm = sumX*sumX + sumY*sumY;

  //slide window and find maximum
  for(unsigned int win_start=0, win_end=window_width; win_start < num_bins-1; win_start++, win_end++)
  {
    if(win_end == num_bins)
      win_end = 0;

    //remove old window start position from sum before shifting window
    sumX -= ori_x[win_start];
    sumY -= ori_y[win_start];
    sumX += ori_x[win_end];
    sumY += ori_y[win_end];

    // if the vector produced from this window is longer than all 
    // previous vectors then this forms the new dominant direction
    norm = sumX*sumX + sumY*sumY;

    if(norm > maxNorm) 
    {
      maxNorm = norm;
      maxX = sumX;
      maxY = sumY;
    }
  }

  float orientation = cvFastArctan(maxX, maxY);
  ori_bin = (int)round(orientation*step) % num_bins;

  // Calculate descriptor for center circle
  for(unsigned int i = 0; i < num_center; i++) 
  {
    rrx = center_haar_x[i]*bin_cos[ori_bin] - center_haar_y[i]*bin_sin[ori_bin];
    cmdx += fabs(rrx);
    cdx += rrx;

    rry = center_haar_x[i]*bin_sin[ori_bin] + center_haar_y[i]*bin_cos[ori_bin];
    cmdy += fabs(rry);
    cdy += rry;
  }

  len += cdx*cdx + cdy*cdy + cmdx*cmdx + cmdy*cmdy;
  desc[count++] = cdx;
  desc[count++] = cmdx;
  desc[count++] = cdy;
  desc[count++] = cmdy;

  // Calculate descriptor for the inner sectors
  sector_start = 2*(ori_bin - 9);
  if(sector_start < 0)
    sector_start += num_inner;

  for(unsigned int sector = 0; sector < 6; sector++)
  {
    idx=idy=imdx=imdy=0;

    unsigned int index = sector_start;
    for(unsigned int angle = 0; angle < 19; angle++)
    {
      rrx = inner_weight[angle]*inner_haar_x[index];
      imdx += fabs(rrx);
      idx += rrx;

      rry = inner_weight[angle]*inner_haar_y[index];
      imdy += fabs(rry);
      idy += rry;     

      index++;

      rrx = inner_weight[angle]*inner_haar_x[index];
      imdx += fabs(rrx);
      idx += rrx;

      rry = inner_weight[angle]*inner_haar_y[index];
      imdy += fabs(rry);
      idy += rry;     

      if(++index == num_inner)
        index = 0;
    }

    len += idx*idx + idy*idy + imdx*imdx + imdy*imdy;
    desc[count++] = idx;
    desc[count++] = imdx;
    desc[count++] = idy;
    desc[count++] = imdy;

    sector_start = (sector_start + 24) % num_inner;
  }

  // Calculate descriptor for the outer sectors
  sector_start = 3*(ori_bin - 7);
  if(sector_start < 0)
    sector_start += num_outer;

  for(unsigned int sector = 0; sector < 8; sector++)
  {
    odx=ody=omdx=omdy=0;

    unsigned int index = sector_start;
    for(unsigned int angle = 0; angle < 17; angle++)
    {
      rrx = outer_weight[angle]*outer_haar_x[index];
      omdx += fabs(rrx);
      odx += rrx;

      rry = outer_weight[angle]*outer_haar_y[index];
      omdy += fabs(rry);
      ody += rry;
    
      index++;     

      rrx = outer_weight[angle]*outer_haar_x[index];
      omdx += fabs(rrx);
      odx += rrx;

      rry = outer_weight[angle]*outer_haar_y[index];
      omdy += fabs(rry);
      ody += rry;
    
      index++;

      rrx = outer_weight[angle]*outer_haar_x[index];
      omdx += fabs(rrx);
      odx += rrx;

      rry = outer_weight[angle]*outer_haar_y[index];
      omdy += fabs(rry);
      ody += rry;
    
      if(++index == num_outer)
        index = 0;
    }

    len += odx*odx + ody*ody + omdx*omdx + omdy*omdy;
    desc[count++] = odx;
    desc[count++] = omdx;
    desc[count++] = ody;
    desc[count++] = omdy;

    sector_start = (sector_start + 27) % num_outer;
  }

  // convert to unit vector
  len = 127.0/sqrt(len);
  for(unsigned int i = 0; i < 60; i++)
    descriptor[i] = len*desc[i] + 127;
  memset(&descriptor[60], 0, 4); // zero last four elements..

  return true;
}

inline void Scarf::HaarXY(int &haarx, int &haary, const int x, const int y, const int s)
{
  int br_x = x + s, br_y = y + s;
  if(x >= s && y >= s && br_x < m_W && br_y < m_H)
  {
    int tl_x = x - s, tl_y = y - s;

    haarx =   CV_IMAGE_ELEM(m_upright, int, br_y, br_x) - CV_IMAGE_ELEM(m_upright, int, tl_y, br_x) -
              CV_IMAGE_ELEM(m_upright, int, br_y, x)    + CV_IMAGE_ELEM(m_upright, int, tl_y, x)    -
              CV_IMAGE_ELEM(m_upright, int, br_y, x)    + CV_IMAGE_ELEM(m_upright, int, tl_y, x)    +
              CV_IMAGE_ELEM(m_upright, int, br_y, tl_x) - CV_IMAGE_ELEM(m_upright, int, tl_y, tl_x);

    haary =   CV_IMAGE_ELEM(m_upright, int, br_y, br_x) - CV_IMAGE_ELEM(m_upright, int, y, br_x)    -
              CV_IMAGE_ELEM(m_upright, int, br_y, tl_x) + CV_IMAGE_ELEM(m_upright, int, y, tl_x)    -
              CV_IMAGE_ELEM(m_upright, int, y, br_x)    + CV_IMAGE_ELEM(m_upright, int, tl_y, br_x) +
              CV_IMAGE_ELEM(m_upright, int, y, tl_x)    - CV_IMAGE_ELEM(m_upright, int, tl_y, tl_x);
  }
  else
  {
    haarx = 0;
    haary = 0;
  }
}

inline void Scarf::HaarXYO(int &haarx, int &haary, const int x, const int y, const int s, const float weight)
{
  int br_x = x + s, br_y = y + s;
  if(x >= s && y >= s && br_x < m_W && br_y < m_H)
  {
    int tl_x = x - s, tl_y = y - s;

    haarx =   CV_IMAGE_ELEM(m_upright, int, br_y, br_x) - CV_IMAGE_ELEM(m_upright, int, tl_y, br_x) -
              CV_IMAGE_ELEM(m_upright, int, br_y, x)    + CV_IMAGE_ELEM(m_upright, int, tl_y, x)    -
              CV_IMAGE_ELEM(m_upright, int, br_y, x)    + CV_IMAGE_ELEM(m_upright, int, tl_y, x)    +
              CV_IMAGE_ELEM(m_upright, int, br_y, tl_x) - CV_IMAGE_ELEM(m_upright, int, tl_y, tl_x);

    haary =   CV_IMAGE_ELEM(m_upright, int, br_y, br_x) - CV_IMAGE_ELEM(m_upright, int, y, br_x)    -
              CV_IMAGE_ELEM(m_upright, int, br_y, tl_x) + CV_IMAGE_ELEM(m_upright, int, y, tl_x)    -
              CV_IMAGE_ELEM(m_upright, int, y, br_x)    + CV_IMAGE_ELEM(m_upright, int, tl_y, br_x) +
              CV_IMAGE_ELEM(m_upright, int, y, tl_x)    - CV_IMAGE_ELEM(m_upright, int, tl_y, tl_x);

    int ori = (int)round(cvFastArctan(haary,haarx)*step) % num_bins;
    ori_x[ori] += weight*haarx;
    ori_y[ori] += weight*haary;
  }
  else
  {
    haarx = 0;
    haary = 0;
  }
}

inline void Scarf::HaarXtYt(float &haarx, float &haary, const int x, const int y, const int s, const int t)
{
  int br_x = x + s, br_y = y + s;
  if(x >= s && y >= s && br_x < m_W && br_y < m_H)
  {
    int tl_x = x - s, tl_y = y - s;

    int rx =  CV_IMAGE_ELEM(m_upright, int, br_y, br_x) - CV_IMAGE_ELEM(m_upright, int, tl_y, br_x) -
              CV_IMAGE_ELEM(m_upright, int, br_y, x)    + CV_IMAGE_ELEM(m_upright, int, tl_y, x)    -
              CV_IMAGE_ELEM(m_upright, int, br_y, x)    + CV_IMAGE_ELEM(m_upright, int, tl_y, x)    +
              CV_IMAGE_ELEM(m_upright, int, br_y, tl_x) - CV_IMAGE_ELEM(m_upright, int, tl_y, tl_x);

    int ry =  CV_IMAGE_ELEM(m_upright, int, br_y, br_x) - CV_IMAGE_ELEM(m_upright, int, y, br_x)    -
              CV_IMAGE_ELEM(m_upright, int, br_y, tl_x) + CV_IMAGE_ELEM(m_upright, int, y, tl_x)    -
              CV_IMAGE_ELEM(m_upright, int, y, br_x)    + CV_IMAGE_ELEM(m_upright, int, tl_y, br_x) +
              CV_IMAGE_ELEM(m_upright, int, y, tl_x)    - CV_IMAGE_ELEM(m_upright, int, tl_y, tl_x);

    haarx = rx*bin_cos[t] - ry*bin_sin[t];
    haary = rx*bin_sin[t] + ry*bin_cos[t];
  }
  else
  {
    haarx = 0;
    haary = 0;
  }
}

inline void Scarf::HaarXtYtO(float &haarx, float &haary, const int x, const int y, const int s, const int t, const float weight)
{
  int br_x = x + s, br_y = y + s;
  if(x >= s && y >= s && br_x < m_W && br_y < m_H)
  {
    int tl_x = x - s, tl_y = y - s;

    int rx =  CV_IMAGE_ELEM(m_upright, int, br_y, br_x) - CV_IMAGE_ELEM(m_upright, int, tl_y, br_x) -
              CV_IMAGE_ELEM(m_upright, int, br_y, x)    + CV_IMAGE_ELEM(m_upright, int, tl_y, x)    -
              CV_IMAGE_ELEM(m_upright, int, br_y, x)    + CV_IMAGE_ELEM(m_upright, int, tl_y, x)    +
              CV_IMAGE_ELEM(m_upright, int, br_y, tl_x) - CV_IMAGE_ELEM(m_upright, int, tl_y, tl_x);

    int ry =  CV_IMAGE_ELEM(m_upright, int, br_y, br_x) - CV_IMAGE_ELEM(m_upright, int, y, br_x)    -
              CV_IMAGE_ELEM(m_upright, int, br_y, tl_x) + CV_IMAGE_ELEM(m_upright, int, y, tl_x)    -
              CV_IMAGE_ELEM(m_upright, int, y, br_x)    + CV_IMAGE_ELEM(m_upright, int, tl_y, br_x) +
              CV_IMAGE_ELEM(m_upright, int, y, tl_x)    - CV_IMAGE_ELEM(m_upright, int, tl_y, tl_x);

    haarx = rx*bin_cos[t] - ry*bin_sin[t];
    haary = rx*bin_sin[t] + ry*bin_cos[t];

    int ori = (int)round(cvFastArctan(ry,rx)*step) % num_bins;
    ori_x[ori] += weight*rx;
    ori_y[ori] += weight*ry;
  }
  else
  {
    haarx = 0;
    haary = 0;
  }
}

void Scarf::DescriptorResponsesGen2(int x, int y)
{
	ZeroOrientation();

	HaarXYO(center_haar_x[0], center_haar_y[0], x-2, y, 4, ori_weight[0]);
	HaarXYO(center_haar_x[1], center_haar_y[1], x, y+2, 4, ori_weight[0]);
	HaarXYO(center_haar_x[2], center_haar_y[2], x, y-2, 4, ori_weight[0]);
	HaarXYO(center_haar_x[3], center_haar_y[3], x+2, y, 4, ori_weight[0]);
	HaarXYO(center_haar_x[4], center_haar_y[4], x-4, y+2, 4, ori_weight[1]);
	HaarXYO(center_haar_x[5], center_haar_y[5], x-4, y-2, 4, ori_weight[1]);
	HaarXYO(center_haar_x[6], center_haar_y[6], x-2, y+4, 4, ori_weight[1]);
	HaarXYO(center_haar_x[7], center_haar_y[7], x-2, y-4, 4, ori_weight[1]);
	HaarXYO(center_haar_x[8], center_haar_y[8], x+2, y+4, 4, ori_weight[1]);
	HaarXYO(center_haar_x[9], center_haar_y[9], x+2, y-4, 4, ori_weight[1]);
	HaarXYO(center_haar_x[10], center_haar_y[10], x+4, y+2, 4, ori_weight[1]);
	HaarXYO(center_haar_x[11], center_haar_y[11], x+4, y-2, 4, ori_weight[1]);
	HaarXYO(center_haar_x[12], center_haar_y[12], x-6, y, 4, ori_weight[2]);
	HaarXYO(center_haar_x[13], center_haar_y[13], x, y+6, 4, ori_weight[2]);
	HaarXYO(center_haar_x[14], center_haar_y[14], x, y-6, 4, ori_weight[2]);
	HaarXYO(center_haar_x[15], center_haar_y[15], x+6, y, 4, ori_weight[2]);

	HaarXtYtO(inner_haar_x[0], inner_haar_y[0], x+8, y, 4, 0, ori_weight[5]);
	HaarXtYt(inner_haar_x[1], inner_haar_y[1], x+16, y, 4, 0);
	HaarXtYtO(inner_haar_x[2], inner_haar_y[2], x+10, y, 4, 1, ori_weight[9]);
	HaarXtYt(inner_haar_x[3], inner_haar_y[3], x+14, y-2, 4, 1);
	HaarXtYt(inner_haar_x[4], inner_haar_y[4], x+12, y-2, 4, 2);
	HaarXtYtO(inner_haar_x[5], inner_haar_y[5], x+10, y-2, 4, 2, ori_weight[10]);
	HaarXtYtO(inner_haar_x[6], inner_haar_y[6], x+8, y-2, 4, 3, ori_weight[6]);
	HaarXtYt(inner_haar_x[7], inner_haar_y[7], x+14, y-4, 4, 3);
	HaarXtYtO(inner_haar_x[8], inner_haar_y[8], x+6, y-2, 4, 4, ori_weight[3]);
	HaarXtYt(inner_haar_x[9], inner_haar_y[9], x+12, y-4, 4, 4);
	HaarXtYt(inner_haar_x[10], inner_haar_y[10], x+14, y-6, 4, 5);
	HaarXtYtO(inner_haar_x[11], inner_haar_y[11], x+8, y-4, 4, 5, ori_weight[8]);
	HaarXtYt(inner_haar_x[12], inner_haar_y[12], x+12, y-6, 4, 6);
	HaarXtYtO(inner_haar_x[13], inner_haar_y[13], x+10, y-6, 4, 6, ori_weight[11]);
	HaarXtYtO(inner_haar_x[14], inner_haar_y[14], x+6, y-4, 4, 7, ori_weight[4]);
	HaarXtYt(inner_haar_x[15], inner_haar_y[15], x+12, y-8, 4, 7);
	HaarXtYt(inner_haar_x[16], inner_haar_y[16], x+10, y-8, 4, 8);
	HaarXtYt(inner_haar_x[17], inner_haar_y[17], x+12, y-10, 4, 8);
	HaarXtYtO(inner_haar_x[18], inner_haar_y[18], x+6, y-6, 4, 9, ori_weight[7]);
	HaarXtYt(inner_haar_x[19], inner_haar_y[19], x+10, y-10, 4, 9);
	HaarXtYt(inner_haar_x[20], inner_haar_y[20], x+10, y-12, 4, 10);
	HaarXtYt(inner_haar_x[21], inner_haar_y[21], x+8, y-10, 4, 10);
	HaarXtYtO(inner_haar_x[22], inner_haar_y[22], x+4, y-6, 4, 11, ori_weight[4]);
	HaarXtYt(inner_haar_x[23], inner_haar_y[23], x+8, y-12, 4, 11);
	HaarXtYtO(inner_haar_x[24], inner_haar_y[24], x+6, y-10, 4, 12, ori_weight[11]);
	HaarXtYt(inner_haar_x[25], inner_haar_y[25], x+6, y-12, 4, 12);
	HaarXtYtO(inner_haar_x[26], inner_haar_y[26], x+4, y-8, 4, 13, ori_weight[8]);
	HaarXtYt(inner_haar_x[27], inner_haar_y[27], x+6, y-14, 4, 13);
	HaarXtYtO(inner_haar_x[28], inner_haar_y[28], x+2, y-6, 4, 14, ori_weight[3]);
	HaarXtYt(inner_haar_x[29], inner_haar_y[29], x+4, y-12, 4, 14);
	HaarXtYt(inner_haar_x[30], inner_haar_y[30], x+4, y-14, 4, 15);
	HaarXtYtO(inner_haar_x[31], inner_haar_y[31], x+2, y-8, 4, 15, ori_weight[6]);
	HaarXtYtO(inner_haar_x[32], inner_haar_y[32], x+2, y-10, 4, 16, ori_weight[10]);
	HaarXtYt(inner_haar_x[33], inner_haar_y[33], x+2, y-12, 4, 16);
	HaarXtYtO(inner_haar_x[34], inner_haar_y[34], x, y-10, 4, 17, ori_weight[9]);
	HaarXtYt(inner_haar_x[35], inner_haar_y[35], x+2, y-14, 4, 17);
	HaarXtYtO(inner_haar_x[36], inner_haar_y[36], x, y-8, 4, 18, ori_weight[5]);
	HaarXtYt(inner_haar_x[37], inner_haar_y[37], x, y-16, 4, 18);
	HaarXtYtO(inner_haar_x[38], inner_haar_y[38], x, y-12, 4, 19, ori_weight[12]);
	HaarXtYt(inner_haar_x[39], inner_haar_y[39], x-2, y-14, 4, 19);
	HaarXtYt(inner_haar_x[40], inner_haar_y[40], x-2, y-12, 4, 20);
	HaarXtYtO(inner_haar_x[41], inner_haar_y[41], x-2, y-10, 4, 20, ori_weight[10]);
	HaarXtYtO(inner_haar_x[42], inner_haar_y[42], x-2, y-8, 4, 21, ori_weight[6]);
	HaarXtYt(inner_haar_x[43], inner_haar_y[43], x-4, y-14, 4, 21);
	HaarXtYtO(inner_haar_x[44], inner_haar_y[44], x-2, y-6, 4, 22, ori_weight[3]);
	HaarXtYt(inner_haar_x[45], inner_haar_y[45], x-4, y-12, 4, 22);
	HaarXtYt(inner_haar_x[46], inner_haar_y[46], x-6, y-14, 4, 23);
	HaarXtYtO(inner_haar_x[47], inner_haar_y[47], x-4, y-8, 4, 23, ori_weight[8]);
	HaarXtYt(inner_haar_x[48], inner_haar_y[48], x-6, y-12, 4, 24);
	HaarXtYtO(inner_haar_x[49], inner_haar_y[49], x-6, y-10, 4, 24, ori_weight[11]);
	HaarXtYtO(inner_haar_x[50], inner_haar_y[50], x-4, y-6, 4, 25, ori_weight[4]);
	HaarXtYt(inner_haar_x[51], inner_haar_y[51], x-8, y-12, 4, 25);
	HaarXtYt(inner_haar_x[52], inner_haar_y[52], x-8, y-10, 4, 26);
	HaarXtYt(inner_haar_x[53], inner_haar_y[53], x-10, y-12, 4, 26);
	HaarXtYtO(inner_haar_x[54], inner_haar_y[54], x-6, y-6, 4, 27, ori_weight[7]);
	HaarXtYt(inner_haar_x[55], inner_haar_y[55], x-10, y-10, 4, 27);
	HaarXtYt(inner_haar_x[56], inner_haar_y[56], x-12, y-10, 4, 28);
	HaarXtYt(inner_haar_x[57], inner_haar_y[57], x-10, y-8, 4, 28);
	HaarXtYtO(inner_haar_x[58], inner_haar_y[58], x-6, y-4, 4, 29, ori_weight[4]);
	HaarXtYt(inner_haar_x[59], inner_haar_y[59], x-12, y-8, 4, 29);
	HaarXtYtO(inner_haar_x[60], inner_haar_y[60], x-10, y-6, 4, 30, ori_weight[11]);
	HaarXtYt(inner_haar_x[61], inner_haar_y[61], x-12, y-6, 4, 30);
	HaarXtYtO(inner_haar_x[62], inner_haar_y[62], x-8, y-4, 4, 31, ori_weight[8]);
	HaarXtYt(inner_haar_x[63], inner_haar_y[63], x-14, y-6, 4, 31);
	HaarXtYtO(inner_haar_x[64], inner_haar_y[64], x-6, y-2, 4, 32, ori_weight[3]);
	HaarXtYt(inner_haar_x[65], inner_haar_y[65], x-12, y-4, 4, 32);
	HaarXtYt(inner_haar_x[66], inner_haar_y[66], x-14, y-4, 4, 33);
	HaarXtYtO(inner_haar_x[67], inner_haar_y[67], x-8, y-2, 4, 33, ori_weight[6]);
	HaarXtYtO(inner_haar_x[68], inner_haar_y[68], x-10, y-2, 4, 34, ori_weight[10]);
	HaarXtYt(inner_haar_x[69], inner_haar_y[69], x-12, y-2, 4, 34);
	HaarXtYtO(inner_haar_x[70], inner_haar_y[70], x-10, y, 4, 35, ori_weight[9]);
	HaarXtYt(inner_haar_x[71], inner_haar_y[71], x-14, y-2, 4, 35);
	HaarXtYtO(inner_haar_x[72], inner_haar_y[72], x-8, y, 4, 36, ori_weight[5]);
	HaarXtYt(inner_haar_x[73], inner_haar_y[73], x-16, y, 4, 36);
	HaarXtYtO(inner_haar_x[74], inner_haar_y[74], x-12, y, 4, 37, ori_weight[12]);
	HaarXtYt(inner_haar_x[75], inner_haar_y[75], x-14, y+2, 4, 37);
	HaarXtYt(inner_haar_x[76], inner_haar_y[76], x-12, y+2, 4, 38);
	HaarXtYtO(inner_haar_x[77], inner_haar_y[77], x-10, y+2, 4, 38, ori_weight[10]);
	HaarXtYtO(inner_haar_x[78], inner_haar_y[78], x-8, y+2, 4, 39, ori_weight[6]);
	HaarXtYt(inner_haar_x[79], inner_haar_y[79], x-14, y+4, 4, 39);
	HaarXtYtO(inner_haar_x[80], inner_haar_y[80], x-6, y+2, 4, 40, ori_weight[3]);
	HaarXtYt(inner_haar_x[81], inner_haar_y[81], x-12, y+4, 4, 40);
	HaarXtYt(inner_haar_x[82], inner_haar_y[82], x-14, y+6, 4, 41);
	HaarXtYtO(inner_haar_x[83], inner_haar_y[83], x-8, y+4, 4, 41, ori_weight[8]);
	HaarXtYt(inner_haar_x[84], inner_haar_y[84], x-12, y+6, 4, 42);
	HaarXtYtO(inner_haar_x[85], inner_haar_y[85], x-10, y+6, 4, 42, ori_weight[11]);
	HaarXtYtO(inner_haar_x[86], inner_haar_y[86], x-6, y+4, 4, 43, ori_weight[4]);
	HaarXtYt(inner_haar_x[87], inner_haar_y[87], x-12, y+8, 4, 43);
	HaarXtYt(inner_haar_x[88], inner_haar_y[88], x-10, y+8, 4, 44);
	HaarXtYt(inner_haar_x[89], inner_haar_y[89], x-12, y+10, 4, 44);
	HaarXtYtO(inner_haar_x[90], inner_haar_y[90], x-6, y+6, 4, 45, ori_weight[7]);
	HaarXtYt(inner_haar_x[91], inner_haar_y[91], x-10, y+10, 4, 45);
	HaarXtYt(inner_haar_x[92], inner_haar_y[92], x-10, y+12, 4, 46);
	HaarXtYt(inner_haar_x[93], inner_haar_y[93], x-8, y+10, 4, 46);
	HaarXtYtO(inner_haar_x[94], inner_haar_y[94], x-4, y+6, 4, 47, ori_weight[4]);
	HaarXtYt(inner_haar_x[95], inner_haar_y[95], x-8, y+12, 4, 47);
	HaarXtYtO(inner_haar_x[96], inner_haar_y[96], x-6, y+10, 4, 48, ori_weight[11]);
	HaarXtYt(inner_haar_x[97], inner_haar_y[97], x-6, y+12, 4, 48);
	HaarXtYtO(inner_haar_x[98], inner_haar_y[98], x-4, y+8, 4, 49, ori_weight[8]);
	HaarXtYt(inner_haar_x[99], inner_haar_y[99], x-6, y+14, 4, 49);
	HaarXtYtO(inner_haar_x[100], inner_haar_y[100], x-2, y+6, 4, 50, ori_weight[3]);
	HaarXtYt(inner_haar_x[101], inner_haar_y[101], x-4, y+12, 4, 50);
	HaarXtYt(inner_haar_x[102], inner_haar_y[102], x-4, y+14, 4, 51);
	HaarXtYtO(inner_haar_x[103], inner_haar_y[103], x-2, y+8, 4, 51, ori_weight[6]);
	HaarXtYtO(inner_haar_x[104], inner_haar_y[104], x-2, y+10, 4, 52, ori_weight[10]);
	HaarXtYt(inner_haar_x[105], inner_haar_y[105], x-2, y+12, 4, 52);
	HaarXtYtO(inner_haar_x[106], inner_haar_y[106], x, y+10, 4, 53, ori_weight[9]);
	HaarXtYt(inner_haar_x[107], inner_haar_y[107], x-2, y+14, 4, 53);
	HaarXtYtO(inner_haar_x[108], inner_haar_y[108], x, y+8, 4, 54, ori_weight[5]);
	HaarXtYt(inner_haar_x[109], inner_haar_y[109], x, y+16, 4, 54);
	HaarXtYtO(inner_haar_x[110], inner_haar_y[110], x, y+12, 4, 55, ori_weight[12]);
	HaarXtYt(inner_haar_x[111], inner_haar_y[111], x+2, y+14, 4, 55);
	HaarXtYt(inner_haar_x[112], inner_haar_y[112], x+2, y+12, 4, 56);
	HaarXtYtO(inner_haar_x[113], inner_haar_y[113], x+2, y+10, 4, 56, ori_weight[10]);
	HaarXtYtO(inner_haar_x[114], inner_haar_y[114], x+2, y+8, 4, 57, ori_weight[6]);
	HaarXtYt(inner_haar_x[115], inner_haar_y[115], x+4, y+14, 4, 57);
	HaarXtYtO(inner_haar_x[116], inner_haar_y[116], x+2, y+6, 4, 58, ori_weight[3]);
	HaarXtYt(inner_haar_x[117], inner_haar_y[117], x+4, y+12, 4, 58);
	HaarXtYt(inner_haar_x[118], inner_haar_y[118], x+6, y+14, 4, 59);
	HaarXtYtO(inner_haar_x[119], inner_haar_y[119], x+4, y+8, 4, 59, ori_weight[8]);
	HaarXtYt(inner_haar_x[120], inner_haar_y[120], x+6, y+12, 4, 60);
	HaarXtYtO(inner_haar_x[121], inner_haar_y[121], x+6, y+10, 4, 60, ori_weight[11]);
	HaarXtYtO(inner_haar_x[122], inner_haar_y[122], x+4, y+6, 4, 61, ori_weight[4]);
	HaarXtYt(inner_haar_x[123], inner_haar_y[123], x+8, y+12, 4, 61);
	HaarXtYt(inner_haar_x[124], inner_haar_y[124], x+8, y+10, 4, 62);
	HaarXtYt(inner_haar_x[125], inner_haar_y[125], x+10, y+12, 4, 62);
	HaarXtYtO(inner_haar_x[126], inner_haar_y[126], x+6, y+6, 4, 63, ori_weight[7]);
	HaarXtYt(inner_haar_x[127], inner_haar_y[127], x+10, y+10, 4, 63);
	HaarXtYt(inner_haar_x[128], inner_haar_y[128], x+12, y+10, 4, 64);
	HaarXtYt(inner_haar_x[129], inner_haar_y[129], x+10, y+8, 4, 64);
	HaarXtYtO(inner_haar_x[130], inner_haar_y[130], x+6, y+4, 4, 65, ori_weight[4]);
	HaarXtYt(inner_haar_x[131], inner_haar_y[131], x+12, y+8, 4, 65);
	HaarXtYtO(inner_haar_x[132], inner_haar_y[132], x+10, y+6, 4, 66, ori_weight[11]);
	HaarXtYt(inner_haar_x[133], inner_haar_y[133], x+12, y+6, 4, 66);
	HaarXtYtO(inner_haar_x[134], inner_haar_y[134], x+8, y+4, 4, 67, ori_weight[8]);
	HaarXtYt(inner_haar_x[135], inner_haar_y[135], x+14, y+6, 4, 67);
	HaarXtYtO(inner_haar_x[136], inner_haar_y[136], x+6, y+2, 4, 68, ori_weight[3]);
	HaarXtYt(inner_haar_x[137], inner_haar_y[137], x+12, y+4, 4, 68);
	HaarXtYt(inner_haar_x[138], inner_haar_y[138], x+14, y+4, 4, 69);
	HaarXtYtO(inner_haar_x[139], inner_haar_y[139], x+8, y+2, 4, 69, ori_weight[6]);
	HaarXtYtO(inner_haar_x[140], inner_haar_y[140], x+10, y+2, 4, 70, ori_weight[10]);
	HaarXtYt(inner_haar_x[141], inner_haar_y[141], x+12, y+2, 4, 70);
	HaarXtYtO(inner_haar_x[142], inner_haar_y[142], x+12, y, 4, 71, ori_weight[12]);
	HaarXtYt(inner_haar_x[143], inner_haar_y[143], x+14, y+2, 4, 71);

	HaarXtYt(outer_haar_x[0], outer_haar_y[0], x+18, y, 4, 0);
	HaarXtYt(outer_haar_x[1], outer_haar_y[1], x+24, y, 4, 0);
	HaarXtYt(outer_haar_x[2], outer_haar_y[2], x+30, y, 4, 0);
	HaarXtYt(outer_haar_x[3], outer_haar_y[3], x+28, y-2, 4, 1);
	HaarXtYt(outer_haar_x[4], outer_haar_y[4], x+22, y-2, 4, 1);
	HaarXtYt(outer_haar_x[5], outer_haar_y[5], x+16, y-2, 4, 1);
	HaarXtYt(outer_haar_x[6], outer_haar_y[6], x+24, y-4, 4, 2);
	HaarXtYt(outer_haar_x[7], outer_haar_y[7], x+20, y-4, 4, 2);
	HaarXtYt(outer_haar_x[8], outer_haar_y[8], x+28, y-6, 4, 2);
	HaarXtYt(outer_haar_x[9], outer_haar_y[9], x+16, y-4, 4, 3);
	HaarXtYt(outer_haar_x[10], outer_haar_y[10], x+22, y-6, 4, 3);
	HaarXtYt(outer_haar_x[11], outer_haar_y[11], x+28, y-8, 4, 3);
	HaarXtYt(outer_haar_x[12], outer_haar_y[12], x+28, y-10, 4, 4);
	HaarXtYt(outer_haar_x[13], outer_haar_y[13], x+22, y-8, 4, 4);
	HaarXtYt(outer_haar_x[14], outer_haar_y[14], x+16, y-6, 4, 4);
	HaarXtYt(outer_haar_x[15], outer_haar_y[15], x+26, y-12, 4, 5);
	HaarXtYt(outer_haar_x[16], outer_haar_y[16], x+16, y-8, 4, 5);
	HaarXtYt(outer_haar_x[17], outer_haar_y[17], x+20, y-10, 4, 5);
	HaarXtYt(outer_haar_x[18], outer_haar_y[18], x+26, y-14, 4, 6);
	HaarXtYt(outer_haar_x[19], outer_haar_y[19], x+14, y-8, 4, 6);
	HaarXtYt(outer_haar_x[20], outer_haar_y[20], x+20, y-12, 4, 6);
	HaarXtYt(outer_haar_x[21], outer_haar_y[21], x+20, y-14, 4, 7);
	HaarXtYt(outer_haar_x[22], outer_haar_y[22], x+14, y-10, 4, 7);
	HaarXtYt(outer_haar_x[23], outer_haar_y[23], x+24, y-18, 4, 7);
	HaarXtYt(outer_haar_x[24], outer_haar_y[24], x+14, y-12, 4, 8);
	HaarXtYt(outer_haar_x[25], outer_haar_y[25], x+18, y-16, 4, 8);
	HaarXtYt(outer_haar_x[26], outer_haar_y[26], x+22, y-20, 4, 8);
	HaarXtYt(outer_haar_x[27], outer_haar_y[27], x+12, y-12, 4, 9);
	HaarXtYt(outer_haar_x[28], outer_haar_y[28], x+16, y-16, 4, 9);
	HaarXtYt(outer_haar_x[29], outer_haar_y[29], x+20, y-20, 4, 9);
	HaarXtYt(outer_haar_x[30], outer_haar_y[30], x+20, y-22, 4, 10);
	HaarXtYt(outer_haar_x[31], outer_haar_y[31], x+16, y-18, 4, 10);
	HaarXtYt(outer_haar_x[32], outer_haar_y[32], x+12, y-14, 4, 10);
	HaarXtYt(outer_haar_x[33], outer_haar_y[33], x+18, y-24, 4, 11);
	HaarXtYt(outer_haar_x[34], outer_haar_y[34], x+10, y-14, 4, 11);
	HaarXtYt(outer_haar_x[35], outer_haar_y[35], x+14, y-20, 4, 11);
	HaarXtYt(outer_haar_x[36], outer_haar_y[36], x+12, y-20, 4, 12);
	HaarXtYt(outer_haar_x[37], outer_haar_y[37], x+8, y-14, 4, 12);
	HaarXtYt(outer_haar_x[38], outer_haar_y[38], x+14, y-26, 4, 12);
	HaarXtYt(outer_haar_x[39], outer_haar_y[39], x+8, y-16, 4, 13);
	HaarXtYt(outer_haar_x[40], outer_haar_y[40], x+10, y-20, 4, 13);
	HaarXtYt(outer_haar_x[41], outer_haar_y[41], x+12, y-26, 4, 13);
	HaarXtYt(outer_haar_x[42], outer_haar_y[42], x+6, y-16, 4, 14);
	HaarXtYt(outer_haar_x[43], outer_haar_y[43], x+8, y-22, 4, 14);
	HaarXtYt(outer_haar_x[44], outer_haar_y[44], x+10, y-28, 4, 14);
	HaarXtYt(outer_haar_x[45], outer_haar_y[45], x+8, y-28, 4, 15);
	HaarXtYt(outer_haar_x[46], outer_haar_y[46], x+6, y-22, 4, 15);
	HaarXtYt(outer_haar_x[47], outer_haar_y[47], x+4, y-16, 4, 15);
	HaarXtYt(outer_haar_x[48], outer_haar_y[48], x+6, y-28, 4, 16);
	HaarXtYt(outer_haar_x[49], outer_haar_y[49], x+4, y-20, 4, 16);
	HaarXtYt(outer_haar_x[50], outer_haar_y[50], x+4, y-24, 4, 16);
	HaarXtYt(outer_haar_x[51], outer_haar_y[51], x+2, y-16, 4, 17);
	HaarXtYt(outer_haar_x[52], outer_haar_y[52], x+2, y-22, 4, 17);
	HaarXtYt(outer_haar_x[53], outer_haar_y[53], x+2, y-28, 4, 17);
	HaarXtYt(outer_haar_x[54], outer_haar_y[54], x, y-18, 4, 18);
	HaarXtYt(outer_haar_x[55], outer_haar_y[55], x, y-24, 4, 18);
	HaarXtYt(outer_haar_x[56], outer_haar_y[56], x, y-30, 4, 18);
	HaarXtYt(outer_haar_x[57], outer_haar_y[57], x-2, y-28, 4, 19);
	HaarXtYt(outer_haar_x[58], outer_haar_y[58], x-2, y-22, 4, 19);
	HaarXtYt(outer_haar_x[59], outer_haar_y[59], x-2, y-16, 4, 19);
	HaarXtYt(outer_haar_x[60], outer_haar_y[60], x-4, y-24, 4, 20);
	HaarXtYt(outer_haar_x[61], outer_haar_y[61], x-4, y-20, 4, 20);
	HaarXtYt(outer_haar_x[62], outer_haar_y[62], x-6, y-28, 4, 20);
	HaarXtYt(outer_haar_x[63], outer_haar_y[63], x-4, y-16, 4, 21);
	HaarXtYt(outer_haar_x[64], outer_haar_y[64], x-6, y-22, 4, 21);
	HaarXtYt(outer_haar_x[65], outer_haar_y[65], x-8, y-28, 4, 21);
	HaarXtYt(outer_haar_x[66], outer_haar_y[66], x-10, y-28, 4, 22);
	HaarXtYt(outer_haar_x[67], outer_haar_y[67], x-8, y-22, 4, 22);
	HaarXtYt(outer_haar_x[68], outer_haar_y[68], x-6, y-16, 4, 22);
	HaarXtYt(outer_haar_x[69], outer_haar_y[69], x-12, y-26, 4, 23);
	HaarXtYt(outer_haar_x[70], outer_haar_y[70], x-8, y-16, 4, 23);
	HaarXtYt(outer_haar_x[71], outer_haar_y[71], x-10, y-20, 4, 23);
	HaarXtYt(outer_haar_x[72], outer_haar_y[72], x-14, y-26, 4, 24);
	HaarXtYt(outer_haar_x[73], outer_haar_y[73], x-8, y-14, 4, 24);
	HaarXtYt(outer_haar_x[74], outer_haar_y[74], x-12, y-20, 4, 24);
	HaarXtYt(outer_haar_x[75], outer_haar_y[75], x-14, y-20, 4, 25);
	HaarXtYt(outer_haar_x[76], outer_haar_y[76], x-10, y-14, 4, 25);
	HaarXtYt(outer_haar_x[77], outer_haar_y[77], x-18, y-24, 4, 25);
	HaarXtYt(outer_haar_x[78], outer_haar_y[78], x-12, y-14, 4, 26);
	HaarXtYt(outer_haar_x[79], outer_haar_y[79], x-16, y-18, 4, 26);
	HaarXtYt(outer_haar_x[80], outer_haar_y[80], x-20, y-22, 4, 26);
	HaarXtYt(outer_haar_x[81], outer_haar_y[81], x-12, y-12, 4, 27);
	HaarXtYt(outer_haar_x[82], outer_haar_y[82], x-16, y-16, 4, 27);
	HaarXtYt(outer_haar_x[83], outer_haar_y[83], x-20, y-20, 4, 27);
	HaarXtYt(outer_haar_x[84], outer_haar_y[84], x-22, y-20, 4, 28);
	HaarXtYt(outer_haar_x[85], outer_haar_y[85], x-18, y-16, 4, 28);
	HaarXtYt(outer_haar_x[86], outer_haar_y[86], x-14, y-12, 4, 28);
	HaarXtYt(outer_haar_x[87], outer_haar_y[87], x-24, y-18, 4, 29);
	HaarXtYt(outer_haar_x[88], outer_haar_y[88], x-14, y-10, 4, 29);
	HaarXtYt(outer_haar_x[89], outer_haar_y[89], x-20, y-14, 4, 29);
	HaarXtYt(outer_haar_x[90], outer_haar_y[90], x-20, y-12, 4, 30);
	HaarXtYt(outer_haar_x[91], outer_haar_y[91], x-14, y-8, 4, 30);
	HaarXtYt(outer_haar_x[92], outer_haar_y[92], x-26, y-14, 4, 30);
	HaarXtYt(outer_haar_x[93], outer_haar_y[93], x-16, y-8, 4, 31);
	HaarXtYt(outer_haar_x[94], outer_haar_y[94], x-20, y-10, 4, 31);
	HaarXtYt(outer_haar_x[95], outer_haar_y[95], x-26, y-12, 4, 31);
	HaarXtYt(outer_haar_x[96], outer_haar_y[96], x-16, y-6, 4, 32);
	HaarXtYt(outer_haar_x[97], outer_haar_y[97], x-22, y-8, 4, 32);
	HaarXtYt(outer_haar_x[98], outer_haar_y[98], x-28, y-10, 4, 32);
	HaarXtYt(outer_haar_x[99], outer_haar_y[99], x-28, y-8, 4, 33);
	HaarXtYt(outer_haar_x[100], outer_haar_y[100], x-22, y-6, 4, 33);
	HaarXtYt(outer_haar_x[101], outer_haar_y[101], x-16, y-4, 4, 33);
	HaarXtYt(outer_haar_x[102], outer_haar_y[102], x-28, y-6, 4, 34);
	HaarXtYt(outer_haar_x[103], outer_haar_y[103], x-20, y-4, 4, 34);
	HaarXtYt(outer_haar_x[104], outer_haar_y[104], x-24, y-4, 4, 34);
	HaarXtYt(outer_haar_x[105], outer_haar_y[105], x-16, y-2, 4, 35);
	HaarXtYt(outer_haar_x[106], outer_haar_y[106], x-22, y-2, 4, 35);
	HaarXtYt(outer_haar_x[107], outer_haar_y[107], x-28, y-2, 4, 35);
	HaarXtYt(outer_haar_x[108], outer_haar_y[108], x-18, y, 4, 36);
	HaarXtYt(outer_haar_x[109], outer_haar_y[109], x-24, y, 4, 36);
	HaarXtYt(outer_haar_x[110], outer_haar_y[110], x-30, y, 4, 36);
	HaarXtYt(outer_haar_x[111], outer_haar_y[111], x-28, y+2, 4, 37);
	HaarXtYt(outer_haar_x[112], outer_haar_y[112], x-22, y+2, 4, 37);
	HaarXtYt(outer_haar_x[113], outer_haar_y[113], x-16, y+2, 4, 37);
	HaarXtYt(outer_haar_x[114], outer_haar_y[114], x-24, y+4, 4, 38);
	HaarXtYt(outer_haar_x[115], outer_haar_y[115], x-20, y+4, 4, 38);
	HaarXtYt(outer_haar_x[116], outer_haar_y[116], x-28, y+6, 4, 38);
	HaarXtYt(outer_haar_x[117], outer_haar_y[117], x-16, y+4, 4, 39);
	HaarXtYt(outer_haar_x[118], outer_haar_y[118], x-22, y+6, 4, 39);
	HaarXtYt(outer_haar_x[119], outer_haar_y[119], x-28, y+8, 4, 39);
	HaarXtYt(outer_haar_x[120], outer_haar_y[120], x-28, y+10, 4, 40);
	HaarXtYt(outer_haar_x[121], outer_haar_y[121], x-22, y+8, 4, 40);
	HaarXtYt(outer_haar_x[122], outer_haar_y[122], x-16, y+6, 4, 40);
	HaarXtYt(outer_haar_x[123], outer_haar_y[123], x-26, y+12, 4, 41);
	HaarXtYt(outer_haar_x[124], outer_haar_y[124], x-16, y+8, 4, 41);
	HaarXtYt(outer_haar_x[125], outer_haar_y[125], x-20, y+10, 4, 41);
	HaarXtYt(outer_haar_x[126], outer_haar_y[126], x-26, y+14, 4, 42);
	HaarXtYt(outer_haar_x[127], outer_haar_y[127], x-14, y+8, 4, 42);
	HaarXtYt(outer_haar_x[128], outer_haar_y[128], x-20, y+12, 4, 42);
	HaarXtYt(outer_haar_x[129], outer_haar_y[129], x-20, y+14, 4, 43);
	HaarXtYt(outer_haar_x[130], outer_haar_y[130], x-14, y+10, 4, 43);
	HaarXtYt(outer_haar_x[131], outer_haar_y[131], x-24, y+18, 4, 43);
	HaarXtYt(outer_haar_x[132], outer_haar_y[132], x-14, y+12, 4, 44);
	HaarXtYt(outer_haar_x[133], outer_haar_y[133], x-18, y+16, 4, 44);
	HaarXtYt(outer_haar_x[134], outer_haar_y[134], x-22, y+20, 4, 44);
	HaarXtYt(outer_haar_x[135], outer_haar_y[135], x-12, y+12, 4, 45);
	HaarXtYt(outer_haar_x[136], outer_haar_y[136], x-16, y+16, 4, 45);
	HaarXtYt(outer_haar_x[137], outer_haar_y[137], x-20, y+20, 4, 45);
	HaarXtYt(outer_haar_x[138], outer_haar_y[138], x-20, y+22, 4, 46);
	HaarXtYt(outer_haar_x[139], outer_haar_y[139], x-16, y+18, 4, 46);
	HaarXtYt(outer_haar_x[140], outer_haar_y[140], x-12, y+14, 4, 46);
	HaarXtYt(outer_haar_x[141], outer_haar_y[141], x-18, y+24, 4, 47);
	HaarXtYt(outer_haar_x[142], outer_haar_y[142], x-10, y+14, 4, 47);
	HaarXtYt(outer_haar_x[143], outer_haar_y[143], x-14, y+20, 4, 47);
	HaarXtYt(outer_haar_x[144], outer_haar_y[144], x-12, y+20, 4, 48);
	HaarXtYt(outer_haar_x[145], outer_haar_y[145], x-8, y+14, 4, 48);
	HaarXtYt(outer_haar_x[146], outer_haar_y[146], x-14, y+26, 4, 48);
	HaarXtYt(outer_haar_x[147], outer_haar_y[147], x-8, y+16, 4, 49);
	HaarXtYt(outer_haar_x[148], outer_haar_y[148], x-10, y+20, 4, 49);
	HaarXtYt(outer_haar_x[149], outer_haar_y[149], x-12, y+26, 4, 49);
	HaarXtYt(outer_haar_x[150], outer_haar_y[150], x-6, y+16, 4, 50);
	HaarXtYt(outer_haar_x[151], outer_haar_y[151], x-8, y+22, 4, 50);
	HaarXtYt(outer_haar_x[152], outer_haar_y[152], x-10, y+28, 4, 50);
	HaarXtYt(outer_haar_x[153], outer_haar_y[153], x-8, y+28, 4, 51);
	HaarXtYt(outer_haar_x[154], outer_haar_y[154], x-6, y+22, 4, 51);
	HaarXtYt(outer_haar_x[155], outer_haar_y[155], x-4, y+16, 4, 51);
	HaarXtYt(outer_haar_x[156], outer_haar_y[156], x-6, y+28, 4, 52);
	HaarXtYt(outer_haar_x[157], outer_haar_y[157], x-4, y+20, 4, 52);
	HaarXtYt(outer_haar_x[158], outer_haar_y[158], x-4, y+24, 4, 52);
	HaarXtYt(outer_haar_x[159], outer_haar_y[159], x-2, y+16, 4, 53);
	HaarXtYt(outer_haar_x[160], outer_haar_y[160], x-2, y+22, 4, 53);
	HaarXtYt(outer_haar_x[161], outer_haar_y[161], x-2, y+28, 4, 53);
	HaarXtYt(outer_haar_x[162], outer_haar_y[162], x, y+18, 4, 54);
	HaarXtYt(outer_haar_x[163], outer_haar_y[163], x, y+24, 4, 54);
	HaarXtYt(outer_haar_x[164], outer_haar_y[164], x, y+30, 4, 54);
	HaarXtYt(outer_haar_x[165], outer_haar_y[165], x+2, y+28, 4, 55);
	HaarXtYt(outer_haar_x[166], outer_haar_y[166], x+2, y+22, 4, 55);
	HaarXtYt(outer_haar_x[167], outer_haar_y[167], x+2, y+16, 4, 55);
	HaarXtYt(outer_haar_x[168], outer_haar_y[168], x+4, y+24, 4, 56);
	HaarXtYt(outer_haar_x[169], outer_haar_y[169], x+4, y+20, 4, 56);
	HaarXtYt(outer_haar_x[170], outer_haar_y[170], x+6, y+28, 4, 56);
	HaarXtYt(outer_haar_x[171], outer_haar_y[171], x+4, y+16, 4, 57);
	HaarXtYt(outer_haar_x[172], outer_haar_y[172], x+6, y+22, 4, 57);
	HaarXtYt(outer_haar_x[173], outer_haar_y[173], x+8, y+28, 4, 57);
	HaarXtYt(outer_haar_x[174], outer_haar_y[174], x+10, y+28, 4, 58);
	HaarXtYt(outer_haar_x[175], outer_haar_y[175], x+8, y+22, 4, 58);
	HaarXtYt(outer_haar_x[176], outer_haar_y[176], x+6, y+16, 4, 58);
	HaarXtYt(outer_haar_x[177], outer_haar_y[177], x+12, y+26, 4, 59);
	HaarXtYt(outer_haar_x[178], outer_haar_y[178], x+8, y+16, 4, 59);
	HaarXtYt(outer_haar_x[179], outer_haar_y[179], x+10, y+20, 4, 59);
	HaarXtYt(outer_haar_x[180], outer_haar_y[180], x+14, y+26, 4, 60);
	HaarXtYt(outer_haar_x[181], outer_haar_y[181], x+8, y+14, 4, 60);
	HaarXtYt(outer_haar_x[182], outer_haar_y[182], x+12, y+20, 4, 60);
	HaarXtYt(outer_haar_x[183], outer_haar_y[183], x+14, y+20, 4, 61);
	HaarXtYt(outer_haar_x[184], outer_haar_y[184], x+10, y+14, 4, 61);
	HaarXtYt(outer_haar_x[185], outer_haar_y[185], x+18, y+24, 4, 61);
	HaarXtYt(outer_haar_x[186], outer_haar_y[186], x+12, y+14, 4, 62);
	HaarXtYt(outer_haar_x[187], outer_haar_y[187], x+16, y+18, 4, 62);
	HaarXtYt(outer_haar_x[188], outer_haar_y[188], x+20, y+22, 4, 62);
	HaarXtYt(outer_haar_x[189], outer_haar_y[189], x+12, y+12, 4, 63);
	HaarXtYt(outer_haar_x[190], outer_haar_y[190], x+16, y+16, 4, 63);
	HaarXtYt(outer_haar_x[191], outer_haar_y[191], x+20, y+20, 4, 63);
	HaarXtYt(outer_haar_x[192], outer_haar_y[192], x+22, y+20, 4, 64);
	HaarXtYt(outer_haar_x[193], outer_haar_y[193], x+18, y+16, 4, 64);
	HaarXtYt(outer_haar_x[194], outer_haar_y[194], x+14, y+12, 4, 64);
	HaarXtYt(outer_haar_x[195], outer_haar_y[195], x+24, y+18, 4, 65);
	HaarXtYt(outer_haar_x[196], outer_haar_y[196], x+14, y+10, 4, 65);
	HaarXtYt(outer_haar_x[197], outer_haar_y[197], x+20, y+14, 4, 65);
	HaarXtYt(outer_haar_x[198], outer_haar_y[198], x+20, y+12, 4, 66);
	HaarXtYt(outer_haar_x[199], outer_haar_y[199], x+14, y+8, 4, 66);
	HaarXtYt(outer_haar_x[200], outer_haar_y[200], x+26, y+14, 4, 66);
	HaarXtYt(outer_haar_x[201], outer_haar_y[201], x+16, y+8, 4, 67);
	HaarXtYt(outer_haar_x[202], outer_haar_y[202], x+20, y+10, 4, 67);
	HaarXtYt(outer_haar_x[203], outer_haar_y[203], x+26, y+12, 4, 67);
	HaarXtYt(outer_haar_x[204], outer_haar_y[204], x+16, y+6, 4, 68);
	HaarXtYt(outer_haar_x[205], outer_haar_y[205], x+22, y+8, 4, 68);
	HaarXtYt(outer_haar_x[206], outer_haar_y[206], x+28, y+10, 4, 68);
	HaarXtYt(outer_haar_x[207], outer_haar_y[207], x+28, y+8, 4, 69);
	HaarXtYt(outer_haar_x[208], outer_haar_y[208], x+22, y+6, 4, 69);
	HaarXtYt(outer_haar_x[209], outer_haar_y[209], x+16, y+4, 4, 69);
	HaarXtYt(outer_haar_x[210], outer_haar_y[210], x+28, y+6, 4, 70);
	HaarXtYt(outer_haar_x[211], outer_haar_y[211], x+20, y+4, 4, 70);
	HaarXtYt(outer_haar_x[212], outer_haar_y[212], x+24, y+4, 4, 70);
	HaarXtYt(outer_haar_x[213], outer_haar_y[213], x+16, y+2, 4, 71);
	HaarXtYt(outer_haar_x[214], outer_haar_y[214], x+22, y+2, 4, 71);
	HaarXtYt(outer_haar_x[215], outer_haar_y[215], x+28, y+2, 4, 71);
}

void Scarf::DescriptorResponsesGen3(int x, int y)
{
	ZeroOrientation();

	HaarXYO(center_haar_x[0], center_haar_y[0], x-3, y, 6, ori_weight[0]);
	HaarXYO(center_haar_x[1], center_haar_y[1], x, y+3, 6, ori_weight[0]);
	HaarXYO(center_haar_x[2], center_haar_y[2], x, y-3, 6, ori_weight[0]);
	HaarXYO(center_haar_x[3], center_haar_y[3], x+3, y, 6, ori_weight[0]);
	HaarXYO(center_haar_x[4], center_haar_y[4], x-6, y+3, 6, ori_weight[1]);
	HaarXYO(center_haar_x[5], center_haar_y[5], x-6, y-3, 6, ori_weight[1]);
	HaarXYO(center_haar_x[6], center_haar_y[6], x-3, y+6, 6, ori_weight[1]);
	HaarXYO(center_haar_x[7], center_haar_y[7], x-3, y-6, 6, ori_weight[1]);
	HaarXYO(center_haar_x[8], center_haar_y[8], x+3, y+6, 6, ori_weight[1]);
	HaarXYO(center_haar_x[9], center_haar_y[9], x+3, y-6, 6, ori_weight[1]);
	HaarXYO(center_haar_x[10], center_haar_y[10], x+6, y+3, 6, ori_weight[1]);
	HaarXYO(center_haar_x[11], center_haar_y[11], x+6, y-3, 6, ori_weight[1]);
	HaarXYO(center_haar_x[12], center_haar_y[12], x-9, y, 6, ori_weight[2]);
	HaarXYO(center_haar_x[13], center_haar_y[13], x, y+9, 6, ori_weight[2]);
	HaarXYO(center_haar_x[14], center_haar_y[14], x, y-9, 6, ori_weight[2]);
	HaarXYO(center_haar_x[15], center_haar_y[15], x+9, y, 6, ori_weight[2]);

	HaarXtYtO(inner_haar_x[0], inner_haar_y[0], x+12, y, 6, 0, ori_weight[5]);
	HaarXtYt(inner_haar_x[1], inner_haar_y[1], x+24, y, 6, 0);
	HaarXtYtO(inner_haar_x[2], inner_haar_y[2], x+15, y, 6, 1, ori_weight[9]);
	HaarXtYt(inner_haar_x[3], inner_haar_y[3], x+21, y-3, 6, 1);
	HaarXtYt(inner_haar_x[4], inner_haar_y[4], x+18, y-3, 6, 2);
	HaarXtYtO(inner_haar_x[5], inner_haar_y[5], x+15, y-3, 6, 2, ori_weight[10]);
	HaarXtYtO(inner_haar_x[6], inner_haar_y[6], x+12, y-3, 6, 3, ori_weight[6]);
	HaarXtYt(inner_haar_x[7], inner_haar_y[7], x+21, y-6, 6, 3);
	HaarXtYtO(inner_haar_x[8], inner_haar_y[8], x+9, y-3, 6, 4, ori_weight[3]);
	HaarXtYt(inner_haar_x[9], inner_haar_y[9], x+18, y-6, 6, 4);
	HaarXtYt(inner_haar_x[10], inner_haar_y[10], x+21, y-9, 6, 5);
	HaarXtYtO(inner_haar_x[11], inner_haar_y[11], x+12, y-6, 6, 5, ori_weight[8]);
	HaarXtYt(inner_haar_x[12], inner_haar_y[12], x+18, y-9, 6, 6);
	HaarXtYtO(inner_haar_x[13], inner_haar_y[13], x+15, y-9, 6, 6, ori_weight[11]);
	HaarXtYtO(inner_haar_x[14], inner_haar_y[14], x+9, y-6, 6, 7, ori_weight[4]);
	HaarXtYt(inner_haar_x[15], inner_haar_y[15], x+18, y-12, 6, 7);
	HaarXtYt(inner_haar_x[16], inner_haar_y[16], x+15, y-12, 6, 8);
	HaarXtYt(inner_haar_x[17], inner_haar_y[17], x+18, y-15, 6, 8);
	HaarXtYtO(inner_haar_x[18], inner_haar_y[18], x+9, y-9, 6, 9, ori_weight[7]);
	HaarXtYt(inner_haar_x[19], inner_haar_y[19], x+15, y-15, 6, 9);
	HaarXtYt(inner_haar_x[20], inner_haar_y[20], x+15, y-18, 6, 10);
	HaarXtYt(inner_haar_x[21], inner_haar_y[21], x+12, y-15, 6, 10);
	HaarXtYtO(inner_haar_x[22], inner_haar_y[22], x+6, y-9, 6, 11, ori_weight[4]);
	HaarXtYt(inner_haar_x[23], inner_haar_y[23], x+12, y-18, 6, 11);
	HaarXtYtO(inner_haar_x[24], inner_haar_y[24], x+9, y-15, 6, 12, ori_weight[11]);
	HaarXtYt(inner_haar_x[25], inner_haar_y[25], x+9, y-18, 6, 12);
	HaarXtYtO(inner_haar_x[26], inner_haar_y[26], x+6, y-12, 6, 13, ori_weight[8]);
	HaarXtYt(inner_haar_x[27], inner_haar_y[27], x+9, y-21, 6, 13);
	HaarXtYtO(inner_haar_x[28], inner_haar_y[28], x+3, y-9, 6, 14, ori_weight[3]);
	HaarXtYt(inner_haar_x[29], inner_haar_y[29], x+6, y-18, 6, 14);
	HaarXtYt(inner_haar_x[30], inner_haar_y[30], x+6, y-21, 6, 15);
	HaarXtYtO(inner_haar_x[31], inner_haar_y[31], x+3, y-12, 6, 15, ori_weight[6]);
	HaarXtYtO(inner_haar_x[32], inner_haar_y[32], x+3, y-15, 6, 16, ori_weight[10]);
	HaarXtYt(inner_haar_x[33], inner_haar_y[33], x+3, y-18, 6, 16);
	HaarXtYtO(inner_haar_x[34], inner_haar_y[34], x, y-15, 6, 17, ori_weight[9]);
	HaarXtYt(inner_haar_x[35], inner_haar_y[35], x+3, y-21, 6, 17);
	HaarXtYtO(inner_haar_x[36], inner_haar_y[36], x, y-12, 6, 18, ori_weight[5]);
	HaarXtYt(inner_haar_x[37], inner_haar_y[37], x, y-24, 6, 18);
	HaarXtYtO(inner_haar_x[38], inner_haar_y[38], x, y-18, 6, 19, ori_weight[12]);
	HaarXtYt(inner_haar_x[39], inner_haar_y[39], x-3, y-21, 6, 19);
	HaarXtYt(inner_haar_x[40], inner_haar_y[40], x-3, y-18, 6, 20);
	HaarXtYtO(inner_haar_x[41], inner_haar_y[41], x-3, y-15, 6, 20, ori_weight[10]);
	HaarXtYtO(inner_haar_x[42], inner_haar_y[42], x-3, y-12, 6, 21, ori_weight[6]);
	HaarXtYt(inner_haar_x[43], inner_haar_y[43], x-6, y-21, 6, 21);
	HaarXtYtO(inner_haar_x[44], inner_haar_y[44], x-3, y-9, 6, 22, ori_weight[3]);
	HaarXtYt(inner_haar_x[45], inner_haar_y[45], x-6, y-18, 6, 22);
	HaarXtYt(inner_haar_x[46], inner_haar_y[46], x-9, y-21, 6, 23);
	HaarXtYtO(inner_haar_x[47], inner_haar_y[47], x-6, y-12, 6, 23, ori_weight[8]);
	HaarXtYt(inner_haar_x[48], inner_haar_y[48], x-9, y-18, 6, 24);
	HaarXtYtO(inner_haar_x[49], inner_haar_y[49], x-9, y-15, 6, 24, ori_weight[11]);
	HaarXtYtO(inner_haar_x[50], inner_haar_y[50], x-6, y-9, 6, 25, ori_weight[4]);
	HaarXtYt(inner_haar_x[51], inner_haar_y[51], x-12, y-18, 6, 25);
	HaarXtYt(inner_haar_x[52], inner_haar_y[52], x-12, y-15, 6, 26);
	HaarXtYt(inner_haar_x[53], inner_haar_y[53], x-15, y-18, 6, 26);
	HaarXtYtO(inner_haar_x[54], inner_haar_y[54], x-9, y-9, 6, 27, ori_weight[7]);
	HaarXtYt(inner_haar_x[55], inner_haar_y[55], x-15, y-15, 6, 27);
	HaarXtYt(inner_haar_x[56], inner_haar_y[56], x-18, y-15, 6, 28);
	HaarXtYt(inner_haar_x[57], inner_haar_y[57], x-15, y-12, 6, 28);
	HaarXtYtO(inner_haar_x[58], inner_haar_y[58], x-9, y-6, 6, 29, ori_weight[4]);
	HaarXtYt(inner_haar_x[59], inner_haar_y[59], x-18, y-12, 6, 29);
	HaarXtYtO(inner_haar_x[60], inner_haar_y[60], x-15, y-9, 6, 30, ori_weight[11]);
	HaarXtYt(inner_haar_x[61], inner_haar_y[61], x-18, y-9, 6, 30);
	HaarXtYtO(inner_haar_x[62], inner_haar_y[62], x-12, y-6, 6, 31, ori_weight[8]);
	HaarXtYt(inner_haar_x[63], inner_haar_y[63], x-21, y-9, 6, 31);
	HaarXtYtO(inner_haar_x[64], inner_haar_y[64], x-9, y-3, 6, 32, ori_weight[3]);
	HaarXtYt(inner_haar_x[65], inner_haar_y[65], x-18, y-6, 6, 32);
	HaarXtYt(inner_haar_x[66], inner_haar_y[66], x-21, y-6, 6, 33);
	HaarXtYtO(inner_haar_x[67], inner_haar_y[67], x-12, y-3, 6, 33, ori_weight[6]);
	HaarXtYtO(inner_haar_x[68], inner_haar_y[68], x-15, y-3, 6, 34, ori_weight[10]);
	HaarXtYt(inner_haar_x[69], inner_haar_y[69], x-18, y-3, 6, 34);
	HaarXtYtO(inner_haar_x[70], inner_haar_y[70], x-15, y, 6, 35, ori_weight[9]);
	HaarXtYt(inner_haar_x[71], inner_haar_y[71], x-21, y-3, 6, 35);
	HaarXtYtO(inner_haar_x[72], inner_haar_y[72], x-12, y, 6, 36, ori_weight[5]);
	HaarXtYt(inner_haar_x[73], inner_haar_y[73], x-24, y, 6, 36);
	HaarXtYtO(inner_haar_x[74], inner_haar_y[74], x-18, y, 6, 37, ori_weight[12]);
	HaarXtYt(inner_haar_x[75], inner_haar_y[75], x-21, y+3, 6, 37);
	HaarXtYt(inner_haar_x[76], inner_haar_y[76], x-18, y+3, 6, 38);
	HaarXtYtO(inner_haar_x[77], inner_haar_y[77], x-15, y+3, 6, 38, ori_weight[10]);
	HaarXtYtO(inner_haar_x[78], inner_haar_y[78], x-12, y+3, 6, 39, ori_weight[6]);
	HaarXtYt(inner_haar_x[79], inner_haar_y[79], x-21, y+6, 6, 39);
	HaarXtYtO(inner_haar_x[80], inner_haar_y[80], x-9, y+3, 6, 40, ori_weight[3]);
	HaarXtYt(inner_haar_x[81], inner_haar_y[81], x-18, y+6, 6, 40);
	HaarXtYt(inner_haar_x[82], inner_haar_y[82], x-21, y+9, 6, 41);
	HaarXtYtO(inner_haar_x[83], inner_haar_y[83], x-12, y+6, 6, 41, ori_weight[8]);
	HaarXtYt(inner_haar_x[84], inner_haar_y[84], x-18, y+9, 6, 42);
	HaarXtYtO(inner_haar_x[85], inner_haar_y[85], x-15, y+9, 6, 42, ori_weight[11]);
	HaarXtYtO(inner_haar_x[86], inner_haar_y[86], x-9, y+6, 6, 43, ori_weight[4]);
	HaarXtYt(inner_haar_x[87], inner_haar_y[87], x-18, y+12, 6, 43);
	HaarXtYt(inner_haar_x[88], inner_haar_y[88], x-15, y+12, 6, 44);
	HaarXtYt(inner_haar_x[89], inner_haar_y[89], x-18, y+15, 6, 44);
	HaarXtYtO(inner_haar_x[90], inner_haar_y[90], x-9, y+9, 6, 45, ori_weight[7]);
	HaarXtYt(inner_haar_x[91], inner_haar_y[91], x-15, y+15, 6, 45);
	HaarXtYt(inner_haar_x[92], inner_haar_y[92], x-15, y+18, 6, 46);
	HaarXtYt(inner_haar_x[93], inner_haar_y[93], x-12, y+15, 6, 46);
	HaarXtYtO(inner_haar_x[94], inner_haar_y[94], x-6, y+9, 6, 47, ori_weight[4]);
	HaarXtYt(inner_haar_x[95], inner_haar_y[95], x-12, y+18, 6, 47);
	HaarXtYtO(inner_haar_x[96], inner_haar_y[96], x-9, y+15, 6, 48, ori_weight[11]);
	HaarXtYt(inner_haar_x[97], inner_haar_y[97], x-9, y+18, 6, 48);
	HaarXtYtO(inner_haar_x[98], inner_haar_y[98], x-6, y+12, 6, 49, ori_weight[8]);
	HaarXtYt(inner_haar_x[99], inner_haar_y[99], x-9, y+21, 6, 49);
	HaarXtYtO(inner_haar_x[100], inner_haar_y[100], x-3, y+9, 6, 50, ori_weight[3]);
	HaarXtYt(inner_haar_x[101], inner_haar_y[101], x-6, y+18, 6, 50);
	HaarXtYt(inner_haar_x[102], inner_haar_y[102], x-6, y+21, 6, 51);
	HaarXtYtO(inner_haar_x[103], inner_haar_y[103], x-3, y+12, 6, 51, ori_weight[6]);
	HaarXtYtO(inner_haar_x[104], inner_haar_y[104], x-3, y+15, 6, 52, ori_weight[10]);
	HaarXtYt(inner_haar_x[105], inner_haar_y[105], x-3, y+18, 6, 52);
	HaarXtYtO(inner_haar_x[106], inner_haar_y[106], x, y+15, 6, 53, ori_weight[9]);
	HaarXtYt(inner_haar_x[107], inner_haar_y[107], x-3, y+21, 6, 53);
	HaarXtYtO(inner_haar_x[108], inner_haar_y[108], x, y+12, 6, 54, ori_weight[5]);
	HaarXtYt(inner_haar_x[109], inner_haar_y[109], x, y+24, 6, 54);
	HaarXtYtO(inner_haar_x[110], inner_haar_y[110], x, y+18, 6, 55, ori_weight[12]);
	HaarXtYt(inner_haar_x[111], inner_haar_y[111], x+3, y+21, 6, 55);
	HaarXtYt(inner_haar_x[112], inner_haar_y[112], x+3, y+18, 6, 56);
	HaarXtYtO(inner_haar_x[113], inner_haar_y[113], x+3, y+15, 6, 56, ori_weight[10]);
	HaarXtYtO(inner_haar_x[114], inner_haar_y[114], x+3, y+12, 6, 57, ori_weight[6]);
	HaarXtYt(inner_haar_x[115], inner_haar_y[115], x+6, y+21, 6, 57);
	HaarXtYtO(inner_haar_x[116], inner_haar_y[116], x+3, y+9, 6, 58, ori_weight[3]);
	HaarXtYt(inner_haar_x[117], inner_haar_y[117], x+6, y+18, 6, 58);
	HaarXtYt(inner_haar_x[118], inner_haar_y[118], x+9, y+21, 6, 59);
	HaarXtYtO(inner_haar_x[119], inner_haar_y[119], x+6, y+12, 6, 59, ori_weight[8]);
	HaarXtYt(inner_haar_x[120], inner_haar_y[120], x+9, y+18, 6, 60);
	HaarXtYtO(inner_haar_x[121], inner_haar_y[121], x+9, y+15, 6, 60, ori_weight[11]);
	HaarXtYtO(inner_haar_x[122], inner_haar_y[122], x+6, y+9, 6, 61, ori_weight[4]);
	HaarXtYt(inner_haar_x[123], inner_haar_y[123], x+12, y+18, 6, 61);
	HaarXtYt(inner_haar_x[124], inner_haar_y[124], x+12, y+15, 6, 62);
	HaarXtYt(inner_haar_x[125], inner_haar_y[125], x+15, y+18, 6, 62);
	HaarXtYtO(inner_haar_x[126], inner_haar_y[126], x+9, y+9, 6, 63, ori_weight[7]);
	HaarXtYt(inner_haar_x[127], inner_haar_y[127], x+15, y+15, 6, 63);
	HaarXtYt(inner_haar_x[128], inner_haar_y[128], x+18, y+15, 6, 64);
	HaarXtYt(inner_haar_x[129], inner_haar_y[129], x+15, y+12, 6, 64);
	HaarXtYtO(inner_haar_x[130], inner_haar_y[130], x+9, y+6, 6, 65, ori_weight[4]);
	HaarXtYt(inner_haar_x[131], inner_haar_y[131], x+18, y+12, 6, 65);
	HaarXtYtO(inner_haar_x[132], inner_haar_y[132], x+15, y+9, 6, 66, ori_weight[11]);
	HaarXtYt(inner_haar_x[133], inner_haar_y[133], x+18, y+9, 6, 66);
	HaarXtYtO(inner_haar_x[134], inner_haar_y[134], x+12, y+6, 6, 67, ori_weight[8]);
	HaarXtYt(inner_haar_x[135], inner_haar_y[135], x+21, y+9, 6, 67);
	HaarXtYtO(inner_haar_x[136], inner_haar_y[136], x+9, y+3, 6, 68, ori_weight[3]);
	HaarXtYt(inner_haar_x[137], inner_haar_y[137], x+18, y+6, 6, 68);
	HaarXtYt(inner_haar_x[138], inner_haar_y[138], x+21, y+6, 6, 69);
	HaarXtYtO(inner_haar_x[139], inner_haar_y[139], x+12, y+3, 6, 69, ori_weight[6]);
	HaarXtYtO(inner_haar_x[140], inner_haar_y[140], x+15, y+3, 6, 70, ori_weight[10]);
	HaarXtYt(inner_haar_x[141], inner_haar_y[141], x+18, y+3, 6, 70);
	HaarXtYtO(inner_haar_x[142], inner_haar_y[142], x+18, y, 6, 71, ori_weight[12]);
	HaarXtYt(inner_haar_x[143], inner_haar_y[143], x+21, y+3, 6, 71);

	HaarXtYt(outer_haar_x[0], outer_haar_y[0], x+27, y, 6, 0);
	HaarXtYt(outer_haar_x[1], outer_haar_y[1], x+36, y, 6, 0);
	HaarXtYt(outer_haar_x[2], outer_haar_y[2], x+45, y, 6, 0);
	HaarXtYt(outer_haar_x[3], outer_haar_y[3], x+42, y-3, 6, 1);
	HaarXtYt(outer_haar_x[4], outer_haar_y[4], x+33, y-3, 6, 1);
	HaarXtYt(outer_haar_x[5], outer_haar_y[5], x+24, y-3, 6, 1);
	HaarXtYt(outer_haar_x[6], outer_haar_y[6], x+36, y-6, 6, 2);
	HaarXtYt(outer_haar_x[7], outer_haar_y[7], x+30, y-6, 6, 2);
	HaarXtYt(outer_haar_x[8], outer_haar_y[8], x+42, y-9, 6, 2);
	HaarXtYt(outer_haar_x[9], outer_haar_y[9], x+24, y-6, 6, 3);
	HaarXtYt(outer_haar_x[10], outer_haar_y[10], x+33, y-9, 6, 3);
	HaarXtYt(outer_haar_x[11], outer_haar_y[11], x+42, y-12, 6, 3);
	HaarXtYt(outer_haar_x[12], outer_haar_y[12], x+42, y-15, 6, 4);
	HaarXtYt(outer_haar_x[13], outer_haar_y[13], x+33, y-12, 6, 4);
	HaarXtYt(outer_haar_x[14], outer_haar_y[14], x+24, y-9, 6, 4);
	HaarXtYt(outer_haar_x[15], outer_haar_y[15], x+39, y-18, 6, 5);
	HaarXtYt(outer_haar_x[16], outer_haar_y[16], x+24, y-12, 6, 5);
	HaarXtYt(outer_haar_x[17], outer_haar_y[17], x+30, y-15, 6, 5);
	HaarXtYt(outer_haar_x[18], outer_haar_y[18], x+39, y-21, 6, 6);
	HaarXtYt(outer_haar_x[19], outer_haar_y[19], x+21, y-12, 6, 6);
	HaarXtYt(outer_haar_x[20], outer_haar_y[20], x+30, y-18, 6, 6);
	HaarXtYt(outer_haar_x[21], outer_haar_y[21], x+30, y-21, 6, 7);
	HaarXtYt(outer_haar_x[22], outer_haar_y[22], x+21, y-15, 6, 7);
	HaarXtYt(outer_haar_x[23], outer_haar_y[23], x+36, y-27, 6, 7);
	HaarXtYt(outer_haar_x[24], outer_haar_y[24], x+21, y-18, 6, 8);
	HaarXtYt(outer_haar_x[25], outer_haar_y[25], x+27, y-24, 6, 8);
	HaarXtYt(outer_haar_x[26], outer_haar_y[26], x+33, y-30, 6, 8);
	HaarXtYt(outer_haar_x[27], outer_haar_y[27], x+18, y-18, 6, 9);
	HaarXtYt(outer_haar_x[28], outer_haar_y[28], x+24, y-24, 6, 9);
	HaarXtYt(outer_haar_x[29], outer_haar_y[29], x+30, y-30, 6, 9);
	HaarXtYt(outer_haar_x[30], outer_haar_y[30], x+30, y-33, 6, 10);
	HaarXtYt(outer_haar_x[31], outer_haar_y[31], x+24, y-27, 6, 10);
	HaarXtYt(outer_haar_x[32], outer_haar_y[32], x+18, y-21, 6, 10);
	HaarXtYt(outer_haar_x[33], outer_haar_y[33], x+27, y-36, 6, 11);
	HaarXtYt(outer_haar_x[34], outer_haar_y[34], x+15, y-21, 6, 11);
	HaarXtYt(outer_haar_x[35], outer_haar_y[35], x+21, y-30, 6, 11);
	HaarXtYt(outer_haar_x[36], outer_haar_y[36], x+18, y-30, 6, 12);
	HaarXtYt(outer_haar_x[37], outer_haar_y[37], x+12, y-21, 6, 12);
	HaarXtYt(outer_haar_x[38], outer_haar_y[38], x+21, y-39, 6, 12);
	HaarXtYt(outer_haar_x[39], outer_haar_y[39], x+12, y-24, 6, 13);
	HaarXtYt(outer_haar_x[40], outer_haar_y[40], x+15, y-30, 6, 13);
	HaarXtYt(outer_haar_x[41], outer_haar_y[41], x+18, y-39, 6, 13);
	HaarXtYt(outer_haar_x[42], outer_haar_y[42], x+9, y-24, 6, 14);
	HaarXtYt(outer_haar_x[43], outer_haar_y[43], x+12, y-33, 6, 14);
	HaarXtYt(outer_haar_x[44], outer_haar_y[44], x+15, y-42, 6, 14);
	HaarXtYt(outer_haar_x[45], outer_haar_y[45], x+12, y-42, 6, 15);
	HaarXtYt(outer_haar_x[46], outer_haar_y[46], x+9, y-33, 6, 15);
	HaarXtYt(outer_haar_x[47], outer_haar_y[47], x+6, y-24, 6, 15);
	HaarXtYt(outer_haar_x[48], outer_haar_y[48], x+9, y-42, 6, 16);
	HaarXtYt(outer_haar_x[49], outer_haar_y[49], x+6, y-30, 6, 16);
	HaarXtYt(outer_haar_x[50], outer_haar_y[50], x+6, y-36, 6, 16);
	HaarXtYt(outer_haar_x[51], outer_haar_y[51], x+3, y-24, 6, 17);
	HaarXtYt(outer_haar_x[52], outer_haar_y[52], x+3, y-33, 6, 17);
	HaarXtYt(outer_haar_x[53], outer_haar_y[53], x+3, y-42, 6, 17);
	HaarXtYt(outer_haar_x[54], outer_haar_y[54], x, y-27, 6, 18);
	HaarXtYt(outer_haar_x[55], outer_haar_y[55], x, y-36, 6, 18);
	HaarXtYt(outer_haar_x[56], outer_haar_y[56], x, y-45, 6, 18);
	HaarXtYt(outer_haar_x[57], outer_haar_y[57], x-3, y-42, 6, 19);
	HaarXtYt(outer_haar_x[58], outer_haar_y[58], x-3, y-33, 6, 19);
	HaarXtYt(outer_haar_x[59], outer_haar_y[59], x-3, y-24, 6, 19);
	HaarXtYt(outer_haar_x[60], outer_haar_y[60], x-6, y-36, 6, 20);
	HaarXtYt(outer_haar_x[61], outer_haar_y[61], x-6, y-30, 6, 20);
	HaarXtYt(outer_haar_x[62], outer_haar_y[62], x-9, y-42, 6, 20);
	HaarXtYt(outer_haar_x[63], outer_haar_y[63], x-6, y-24, 6, 21);
	HaarXtYt(outer_haar_x[64], outer_haar_y[64], x-9, y-33, 6, 21);
	HaarXtYt(outer_haar_x[65], outer_haar_y[65], x-12, y-42, 6, 21);
	HaarXtYt(outer_haar_x[66], outer_haar_y[66], x-15, y-42, 6, 22);
	HaarXtYt(outer_haar_x[67], outer_haar_y[67], x-12, y-33, 6, 22);
	HaarXtYt(outer_haar_x[68], outer_haar_y[68], x-9, y-24, 6, 22);
	HaarXtYt(outer_haar_x[69], outer_haar_y[69], x-18, y-39, 6, 23);
	HaarXtYt(outer_haar_x[70], outer_haar_y[70], x-12, y-24, 6, 23);
	HaarXtYt(outer_haar_x[71], outer_haar_y[71], x-15, y-30, 6, 23);
	HaarXtYt(outer_haar_x[72], outer_haar_y[72], x-21, y-39, 6, 24);
	HaarXtYt(outer_haar_x[73], outer_haar_y[73], x-12, y-21, 6, 24);
	HaarXtYt(outer_haar_x[74], outer_haar_y[74], x-18, y-30, 6, 24);
	HaarXtYt(outer_haar_x[75], outer_haar_y[75], x-21, y-30, 6, 25);
	HaarXtYt(outer_haar_x[76], outer_haar_y[76], x-15, y-21, 6, 25);
	HaarXtYt(outer_haar_x[77], outer_haar_y[77], x-27, y-36, 6, 25);
	HaarXtYt(outer_haar_x[78], outer_haar_y[78], x-18, y-21, 6, 26);
	HaarXtYt(outer_haar_x[79], outer_haar_y[79], x-24, y-27, 6, 26);
	HaarXtYt(outer_haar_x[80], outer_haar_y[80], x-30, y-33, 6, 26);
	HaarXtYt(outer_haar_x[81], outer_haar_y[81], x-18, y-18, 6, 27);
	HaarXtYt(outer_haar_x[82], outer_haar_y[82], x-24, y-24, 6, 27);
	HaarXtYt(outer_haar_x[83], outer_haar_y[83], x-30, y-30, 6, 27);
	HaarXtYt(outer_haar_x[84], outer_haar_y[84], x-33, y-30, 6, 28);
	HaarXtYt(outer_haar_x[85], outer_haar_y[85], x-27, y-24, 6, 28);
	HaarXtYt(outer_haar_x[86], outer_haar_y[86], x-21, y-18, 6, 28);
	HaarXtYt(outer_haar_x[87], outer_haar_y[87], x-36, y-27, 6, 29);
	HaarXtYt(outer_haar_x[88], outer_haar_y[88], x-21, y-15, 6, 29);
	HaarXtYt(outer_haar_x[89], outer_haar_y[89], x-30, y-21, 6, 29);
	HaarXtYt(outer_haar_x[90], outer_haar_y[90], x-30, y-18, 6, 30);
	HaarXtYt(outer_haar_x[91], outer_haar_y[91], x-21, y-12, 6, 30);
	HaarXtYt(outer_haar_x[92], outer_haar_y[92], x-39, y-21, 6, 30);
	HaarXtYt(outer_haar_x[93], outer_haar_y[93], x-24, y-12, 6, 31);
	HaarXtYt(outer_haar_x[94], outer_haar_y[94], x-30, y-15, 6, 31);
	HaarXtYt(outer_haar_x[95], outer_haar_y[95], x-39, y-18, 6, 31);
	HaarXtYt(outer_haar_x[96], outer_haar_y[96], x-24, y-9, 6, 32);
	HaarXtYt(outer_haar_x[97], outer_haar_y[97], x-33, y-12, 6, 32);
	HaarXtYt(outer_haar_x[98], outer_haar_y[98], x-42, y-15, 6, 32);
	HaarXtYt(outer_haar_x[99], outer_haar_y[99], x-42, y-12, 6, 33);
	HaarXtYt(outer_haar_x[100], outer_haar_y[100], x-33, y-9, 6, 33);
	HaarXtYt(outer_haar_x[101], outer_haar_y[101], x-24, y-6, 6, 33);
	HaarXtYt(outer_haar_x[102], outer_haar_y[102], x-42, y-9, 6, 34);
	HaarXtYt(outer_haar_x[103], outer_haar_y[103], x-30, y-6, 6, 34);
	HaarXtYt(outer_haar_x[104], outer_haar_y[104], x-36, y-6, 6, 34);
	HaarXtYt(outer_haar_x[105], outer_haar_y[105], x-24, y-3, 6, 35);
	HaarXtYt(outer_haar_x[106], outer_haar_y[106], x-33, y-3, 6, 35);
	HaarXtYt(outer_haar_x[107], outer_haar_y[107], x-42, y-3, 6, 35);
	HaarXtYt(outer_haar_x[108], outer_haar_y[108], x-27, y, 6, 36);
	HaarXtYt(outer_haar_x[109], outer_haar_y[109], x-36, y, 6, 36);
	HaarXtYt(outer_haar_x[110], outer_haar_y[110], x-45, y, 6, 36);
	HaarXtYt(outer_haar_x[111], outer_haar_y[111], x-42, y+3, 6, 37);
	HaarXtYt(outer_haar_x[112], outer_haar_y[112], x-33, y+3, 6, 37);
	HaarXtYt(outer_haar_x[113], outer_haar_y[113], x-24, y+3, 6, 37);
	HaarXtYt(outer_haar_x[114], outer_haar_y[114], x-36, y+6, 6, 38);
	HaarXtYt(outer_haar_x[115], outer_haar_y[115], x-30, y+6, 6, 38);
	HaarXtYt(outer_haar_x[116], outer_haar_y[116], x-42, y+9, 6, 38);
	HaarXtYt(outer_haar_x[117], outer_haar_y[117], x-24, y+6, 6, 39);
	HaarXtYt(outer_haar_x[118], outer_haar_y[118], x-33, y+9, 6, 39);
	HaarXtYt(outer_haar_x[119], outer_haar_y[119], x-42, y+12, 6, 39);
	HaarXtYt(outer_haar_x[120], outer_haar_y[120], x-42, y+15, 6, 40);
	HaarXtYt(outer_haar_x[121], outer_haar_y[121], x-33, y+12, 6, 40);
	HaarXtYt(outer_haar_x[122], outer_haar_y[122], x-24, y+9, 6, 40);
	HaarXtYt(outer_haar_x[123], outer_haar_y[123], x-39, y+18, 6, 41);
	HaarXtYt(outer_haar_x[124], outer_haar_y[124], x-24, y+12, 6, 41);
	HaarXtYt(outer_haar_x[125], outer_haar_y[125], x-30, y+15, 6, 41);
	HaarXtYt(outer_haar_x[126], outer_haar_y[126], x-39, y+21, 6, 42);
	HaarXtYt(outer_haar_x[127], outer_haar_y[127], x-21, y+12, 6, 42);
	HaarXtYt(outer_haar_x[128], outer_haar_y[128], x-30, y+18, 6, 42);
	HaarXtYt(outer_haar_x[129], outer_haar_y[129], x-30, y+21, 6, 43);
	HaarXtYt(outer_haar_x[130], outer_haar_y[130], x-21, y+15, 6, 43);
	HaarXtYt(outer_haar_x[131], outer_haar_y[131], x-36, y+27, 6, 43);
	HaarXtYt(outer_haar_x[132], outer_haar_y[132], x-21, y+18, 6, 44);
	HaarXtYt(outer_haar_x[133], outer_haar_y[133], x-27, y+24, 6, 44);
	HaarXtYt(outer_haar_x[134], outer_haar_y[134], x-33, y+30, 6, 44);
	HaarXtYt(outer_haar_x[135], outer_haar_y[135], x-18, y+18, 6, 45);
	HaarXtYt(outer_haar_x[136], outer_haar_y[136], x-24, y+24, 6, 45);
	HaarXtYt(outer_haar_x[137], outer_haar_y[137], x-30, y+30, 6, 45);
	HaarXtYt(outer_haar_x[138], outer_haar_y[138], x-30, y+33, 6, 46);
	HaarXtYt(outer_haar_x[139], outer_haar_y[139], x-24, y+27, 6, 46);
	HaarXtYt(outer_haar_x[140], outer_haar_y[140], x-18, y+21, 6, 46);
	HaarXtYt(outer_haar_x[141], outer_haar_y[141], x-27, y+36, 6, 47);
	HaarXtYt(outer_haar_x[142], outer_haar_y[142], x-15, y+21, 6, 47);
	HaarXtYt(outer_haar_x[143], outer_haar_y[143], x-21, y+30, 6, 47);
	HaarXtYt(outer_haar_x[144], outer_haar_y[144], x-18, y+30, 6, 48);
	HaarXtYt(outer_haar_x[145], outer_haar_y[145], x-12, y+21, 6, 48);
	HaarXtYt(outer_haar_x[146], outer_haar_y[146], x-21, y+39, 6, 48);
	HaarXtYt(outer_haar_x[147], outer_haar_y[147], x-12, y+24, 6, 49);
	HaarXtYt(outer_haar_x[148], outer_haar_y[148], x-15, y+30, 6, 49);
	HaarXtYt(outer_haar_x[149], outer_haar_y[149], x-18, y+39, 6, 49);
	HaarXtYt(outer_haar_x[150], outer_haar_y[150], x-9, y+24, 6, 50);
	HaarXtYt(outer_haar_x[151], outer_haar_y[151], x-12, y+33, 6, 50);
	HaarXtYt(outer_haar_x[152], outer_haar_y[152], x-15, y+42, 6, 50);
	HaarXtYt(outer_haar_x[153], outer_haar_y[153], x-12, y+42, 6, 51);
	HaarXtYt(outer_haar_x[154], outer_haar_y[154], x-9, y+33, 6, 51);
	HaarXtYt(outer_haar_x[155], outer_haar_y[155], x-6, y+24, 6, 51);
	HaarXtYt(outer_haar_x[156], outer_haar_y[156], x-9, y+42, 6, 52);
	HaarXtYt(outer_haar_x[157], outer_haar_y[157], x-6, y+30, 6, 52);
	HaarXtYt(outer_haar_x[158], outer_haar_y[158], x-6, y+36, 6, 52);
	HaarXtYt(outer_haar_x[159], outer_haar_y[159], x-3, y+24, 6, 53);
	HaarXtYt(outer_haar_x[160], outer_haar_y[160], x-3, y+33, 6, 53);
	HaarXtYt(outer_haar_x[161], outer_haar_y[161], x-3, y+42, 6, 53);
	HaarXtYt(outer_haar_x[162], outer_haar_y[162], x, y+27, 6, 54);
	HaarXtYt(outer_haar_x[163], outer_haar_y[163], x, y+36, 6, 54);
	HaarXtYt(outer_haar_x[164], outer_haar_y[164], x, y+45, 6, 54);
	HaarXtYt(outer_haar_x[165], outer_haar_y[165], x+3, y+42, 6, 55);
	HaarXtYt(outer_haar_x[166], outer_haar_y[166], x+3, y+33, 6, 55);
	HaarXtYt(outer_haar_x[167], outer_haar_y[167], x+3, y+24, 6, 55);
	HaarXtYt(outer_haar_x[168], outer_haar_y[168], x+6, y+36, 6, 56);
	HaarXtYt(outer_haar_x[169], outer_haar_y[169], x+6, y+30, 6, 56);
	HaarXtYt(outer_haar_x[170], outer_haar_y[170], x+9, y+42, 6, 56);
	HaarXtYt(outer_haar_x[171], outer_haar_y[171], x+6, y+24, 6, 57);
	HaarXtYt(outer_haar_x[172], outer_haar_y[172], x+9, y+33, 6, 57);
	HaarXtYt(outer_haar_x[173], outer_haar_y[173], x+12, y+42, 6, 57);
	HaarXtYt(outer_haar_x[174], outer_haar_y[174], x+15, y+42, 6, 58);
	HaarXtYt(outer_haar_x[175], outer_haar_y[175], x+12, y+33, 6, 58);
	HaarXtYt(outer_haar_x[176], outer_haar_y[176], x+9, y+24, 6, 58);
	HaarXtYt(outer_haar_x[177], outer_haar_y[177], x+18, y+39, 6, 59);
	HaarXtYt(outer_haar_x[178], outer_haar_y[178], x+12, y+24, 6, 59);
	HaarXtYt(outer_haar_x[179], outer_haar_y[179], x+15, y+30, 6, 59);
	HaarXtYt(outer_haar_x[180], outer_haar_y[180], x+21, y+39, 6, 60);
	HaarXtYt(outer_haar_x[181], outer_haar_y[181], x+12, y+21, 6, 60);
	HaarXtYt(outer_haar_x[182], outer_haar_y[182], x+18, y+30, 6, 60);
	HaarXtYt(outer_haar_x[183], outer_haar_y[183], x+21, y+30, 6, 61);
	HaarXtYt(outer_haar_x[184], outer_haar_y[184], x+15, y+21, 6, 61);
	HaarXtYt(outer_haar_x[185], outer_haar_y[185], x+27, y+36, 6, 61);
	HaarXtYt(outer_haar_x[186], outer_haar_y[186], x+18, y+21, 6, 62);
	HaarXtYt(outer_haar_x[187], outer_haar_y[187], x+24, y+27, 6, 62);
	HaarXtYt(outer_haar_x[188], outer_haar_y[188], x+30, y+33, 6, 62);
	HaarXtYt(outer_haar_x[189], outer_haar_y[189], x+18, y+18, 6, 63);
	HaarXtYt(outer_haar_x[190], outer_haar_y[190], x+24, y+24, 6, 63);
	HaarXtYt(outer_haar_x[191], outer_haar_y[191], x+30, y+30, 6, 63);
	HaarXtYt(outer_haar_x[192], outer_haar_y[192], x+33, y+30, 6, 64);
	HaarXtYt(outer_haar_x[193], outer_haar_y[193], x+27, y+24, 6, 64);
	HaarXtYt(outer_haar_x[194], outer_haar_y[194], x+21, y+18, 6, 64);
	HaarXtYt(outer_haar_x[195], outer_haar_y[195], x+36, y+27, 6, 65);
	HaarXtYt(outer_haar_x[196], outer_haar_y[196], x+21, y+15, 6, 65);
	HaarXtYt(outer_haar_x[197], outer_haar_y[197], x+30, y+21, 6, 65);
	HaarXtYt(outer_haar_x[198], outer_haar_y[198], x+30, y+18, 6, 66);
	HaarXtYt(outer_haar_x[199], outer_haar_y[199], x+21, y+12, 6, 66);
	HaarXtYt(outer_haar_x[200], outer_haar_y[200], x+39, y+21, 6, 66);
	HaarXtYt(outer_haar_x[201], outer_haar_y[201], x+24, y+12, 6, 67);
	HaarXtYt(outer_haar_x[202], outer_haar_y[202], x+30, y+15, 6, 67);
	HaarXtYt(outer_haar_x[203], outer_haar_y[203], x+39, y+18, 6, 67);
	HaarXtYt(outer_haar_x[204], outer_haar_y[204], x+24, y+9, 6, 68);
	HaarXtYt(outer_haar_x[205], outer_haar_y[205], x+33, y+12, 6, 68);
	HaarXtYt(outer_haar_x[206], outer_haar_y[206], x+42, y+15, 6, 68);
	HaarXtYt(outer_haar_x[207], outer_haar_y[207], x+42, y+12, 6, 69);
	HaarXtYt(outer_haar_x[208], outer_haar_y[208], x+33, y+9, 6, 69);
	HaarXtYt(outer_haar_x[209], outer_haar_y[209], x+24, y+6, 6, 69);
	HaarXtYt(outer_haar_x[210], outer_haar_y[210], x+42, y+9, 6, 70);
	HaarXtYt(outer_haar_x[211], outer_haar_y[211], x+30, y+6, 6, 70);
	HaarXtYt(outer_haar_x[212], outer_haar_y[212], x+36, y+6, 6, 70);
	HaarXtYt(outer_haar_x[213], outer_haar_y[213], x+24, y+3, 6, 71);
	HaarXtYt(outer_haar_x[214], outer_haar_y[214], x+33, y+3, 6, 71);
	HaarXtYt(outer_haar_x[215], outer_haar_y[215], x+42, y+3, 6, 71);
}

void Scarf::DescriptorResponsesGen4(int x, int y)
{
	ZeroOrientation();

	HaarXYO(center_haar_x[0], center_haar_y[0], x-4, y, 8, ori_weight[0]);
	HaarXYO(center_haar_x[1], center_haar_y[1], x, y+4, 8, ori_weight[0]);
	HaarXYO(center_haar_x[2], center_haar_y[2], x, y-4, 8, ori_weight[0]);
	HaarXYO(center_haar_x[3], center_haar_y[3], x+4, y, 8, ori_weight[0]);
	HaarXYO(center_haar_x[4], center_haar_y[4], x-8, y+4, 8, ori_weight[1]);
	HaarXYO(center_haar_x[5], center_haar_y[5], x-8, y-4, 8, ori_weight[1]);
	HaarXYO(center_haar_x[6], center_haar_y[6], x-4, y+8, 8, ori_weight[1]);
	HaarXYO(center_haar_x[7], center_haar_y[7], x-4, y-8, 8, ori_weight[1]);
	HaarXYO(center_haar_x[8], center_haar_y[8], x+4, y+8, 8, ori_weight[1]);
	HaarXYO(center_haar_x[9], center_haar_y[9], x+4, y-8, 8, ori_weight[1]);
	HaarXYO(center_haar_x[10], center_haar_y[10], x+8, y+4, 8, ori_weight[1]);
	HaarXYO(center_haar_x[11], center_haar_y[11], x+8, y-4, 8, ori_weight[1]);
	HaarXYO(center_haar_x[12], center_haar_y[12], x-12, y, 8, ori_weight[2]);
	HaarXYO(center_haar_x[13], center_haar_y[13], x, y+12, 8, ori_weight[2]);
	HaarXYO(center_haar_x[14], center_haar_y[14], x, y-12, 8, ori_weight[2]);
	HaarXYO(center_haar_x[15], center_haar_y[15], x+12, y, 8, ori_weight[2]);

	HaarXtYtO(inner_haar_x[0], inner_haar_y[0], x+16, y, 8, 0, ori_weight[5]);
	HaarXtYt(inner_haar_x[1], inner_haar_y[1], x+32, y, 8, 0);
	HaarXtYtO(inner_haar_x[2], inner_haar_y[2], x+20, y, 8, 1, ori_weight[9]);
	HaarXtYt(inner_haar_x[3], inner_haar_y[3], x+28, y-4, 8, 1);
	HaarXtYt(inner_haar_x[4], inner_haar_y[4], x+24, y-4, 8, 2);
	HaarXtYtO(inner_haar_x[5], inner_haar_y[5], x+20, y-4, 8, 2, ori_weight[10]);
	HaarXtYtO(inner_haar_x[6], inner_haar_y[6], x+16, y-4, 8, 3, ori_weight[6]);
	HaarXtYt(inner_haar_x[7], inner_haar_y[7], x+28, y-8, 8, 3);
	HaarXtYtO(inner_haar_x[8], inner_haar_y[8], x+12, y-4, 8, 4, ori_weight[3]);
	HaarXtYt(inner_haar_x[9], inner_haar_y[9], x+24, y-8, 8, 4);
	HaarXtYt(inner_haar_x[10], inner_haar_y[10], x+28, y-12, 8, 5);
	HaarXtYtO(inner_haar_x[11], inner_haar_y[11], x+16, y-8, 8, 5, ori_weight[8]);
	HaarXtYt(inner_haar_x[12], inner_haar_y[12], x+24, y-12, 8, 6);
	HaarXtYtO(inner_haar_x[13], inner_haar_y[13], x+20, y-12, 8, 6, ori_weight[11]);
	HaarXtYtO(inner_haar_x[14], inner_haar_y[14], x+12, y-8, 8, 7, ori_weight[4]);
	HaarXtYt(inner_haar_x[15], inner_haar_y[15], x+24, y-16, 8, 7);
	HaarXtYt(inner_haar_x[16], inner_haar_y[16], x+20, y-16, 8, 8);
	HaarXtYt(inner_haar_x[17], inner_haar_y[17], x+24, y-20, 8, 8);
	HaarXtYtO(inner_haar_x[18], inner_haar_y[18], x+12, y-12, 8, 9, ori_weight[7]);
	HaarXtYt(inner_haar_x[19], inner_haar_y[19], x+20, y-20, 8, 9);
	HaarXtYt(inner_haar_x[20], inner_haar_y[20], x+20, y-24, 8, 10);
	HaarXtYt(inner_haar_x[21], inner_haar_y[21], x+16, y-20, 8, 10);
	HaarXtYtO(inner_haar_x[22], inner_haar_y[22], x+8, y-12, 8, 11, ori_weight[4]);
	HaarXtYt(inner_haar_x[23], inner_haar_y[23], x+16, y-24, 8, 11);
	HaarXtYtO(inner_haar_x[24], inner_haar_y[24], x+12, y-20, 8, 12, ori_weight[11]);
	HaarXtYt(inner_haar_x[25], inner_haar_y[25], x+12, y-24, 8, 12);
	HaarXtYtO(inner_haar_x[26], inner_haar_y[26], x+8, y-16, 8, 13, ori_weight[8]);
	HaarXtYt(inner_haar_x[27], inner_haar_y[27], x+12, y-28, 8, 13);
	HaarXtYtO(inner_haar_x[28], inner_haar_y[28], x+4, y-12, 8, 14, ori_weight[3]);
	HaarXtYt(inner_haar_x[29], inner_haar_y[29], x+8, y-24, 8, 14);
	HaarXtYt(inner_haar_x[30], inner_haar_y[30], x+8, y-28, 8, 15);
	HaarXtYtO(inner_haar_x[31], inner_haar_y[31], x+4, y-16, 8, 15, ori_weight[6]);
	HaarXtYtO(inner_haar_x[32], inner_haar_y[32], x+4, y-20, 8, 16, ori_weight[10]);
	HaarXtYt(inner_haar_x[33], inner_haar_y[33], x+4, y-24, 8, 16);
	HaarXtYtO(inner_haar_x[34], inner_haar_y[34], x, y-20, 8, 17, ori_weight[9]);
	HaarXtYt(inner_haar_x[35], inner_haar_y[35], x+4, y-28, 8, 17);
	HaarXtYtO(inner_haar_x[36], inner_haar_y[36], x, y-16, 8, 18, ori_weight[5]);
	HaarXtYt(inner_haar_x[37], inner_haar_y[37], x, y-32, 8, 18);
	HaarXtYtO(inner_haar_x[38], inner_haar_y[38], x, y-24, 8, 19, ori_weight[12]);
	HaarXtYt(inner_haar_x[39], inner_haar_y[39], x-4, y-28, 8, 19);
	HaarXtYt(inner_haar_x[40], inner_haar_y[40], x-4, y-24, 8, 20);
	HaarXtYtO(inner_haar_x[41], inner_haar_y[41], x-4, y-20, 8, 20, ori_weight[10]);
	HaarXtYtO(inner_haar_x[42], inner_haar_y[42], x-4, y-16, 8, 21, ori_weight[6]);
	HaarXtYt(inner_haar_x[43], inner_haar_y[43], x-8, y-28, 8, 21);
	HaarXtYtO(inner_haar_x[44], inner_haar_y[44], x-4, y-12, 8, 22, ori_weight[3]);
	HaarXtYt(inner_haar_x[45], inner_haar_y[45], x-8, y-24, 8, 22);
	HaarXtYt(inner_haar_x[46], inner_haar_y[46], x-12, y-28, 8, 23);
	HaarXtYtO(inner_haar_x[47], inner_haar_y[47], x-8, y-16, 8, 23, ori_weight[8]);
	HaarXtYt(inner_haar_x[48], inner_haar_y[48], x-12, y-24, 8, 24);
	HaarXtYtO(inner_haar_x[49], inner_haar_y[49], x-12, y-20, 8, 24, ori_weight[11]);
	HaarXtYtO(inner_haar_x[50], inner_haar_y[50], x-8, y-12, 8, 25, ori_weight[4]);
	HaarXtYt(inner_haar_x[51], inner_haar_y[51], x-16, y-24, 8, 25);
	HaarXtYt(inner_haar_x[52], inner_haar_y[52], x-16, y-20, 8, 26);
	HaarXtYt(inner_haar_x[53], inner_haar_y[53], x-20, y-24, 8, 26);
	HaarXtYtO(inner_haar_x[54], inner_haar_y[54], x-12, y-12, 8, 27, ori_weight[7]);
	HaarXtYt(inner_haar_x[55], inner_haar_y[55], x-20, y-20, 8, 27);
	HaarXtYt(inner_haar_x[56], inner_haar_y[56], x-24, y-20, 8, 28);
	HaarXtYt(inner_haar_x[57], inner_haar_y[57], x-20, y-16, 8, 28);
	HaarXtYtO(inner_haar_x[58], inner_haar_y[58], x-12, y-8, 8, 29, ori_weight[4]);
	HaarXtYt(inner_haar_x[59], inner_haar_y[59], x-24, y-16, 8, 29);
	HaarXtYtO(inner_haar_x[60], inner_haar_y[60], x-20, y-12, 8, 30, ori_weight[11]);
	HaarXtYt(inner_haar_x[61], inner_haar_y[61], x-24, y-12, 8, 30);
	HaarXtYtO(inner_haar_x[62], inner_haar_y[62], x-16, y-8, 8, 31, ori_weight[8]);
	HaarXtYt(inner_haar_x[63], inner_haar_y[63], x-28, y-12, 8, 31);
	HaarXtYtO(inner_haar_x[64], inner_haar_y[64], x-12, y-4, 8, 32, ori_weight[3]);
	HaarXtYt(inner_haar_x[65], inner_haar_y[65], x-24, y-8, 8, 32);
	HaarXtYt(inner_haar_x[66], inner_haar_y[66], x-28, y-8, 8, 33);
	HaarXtYtO(inner_haar_x[67], inner_haar_y[67], x-16, y-4, 8, 33, ori_weight[6]);
	HaarXtYtO(inner_haar_x[68], inner_haar_y[68], x-20, y-4, 8, 34, ori_weight[10]);
	HaarXtYt(inner_haar_x[69], inner_haar_y[69], x-24, y-4, 8, 34);
	HaarXtYtO(inner_haar_x[70], inner_haar_y[70], x-20, y, 8, 35, ori_weight[9]);
	HaarXtYt(inner_haar_x[71], inner_haar_y[71], x-28, y-4, 8, 35);
	HaarXtYtO(inner_haar_x[72], inner_haar_y[72], x-16, y, 8, 36, ori_weight[5]);
	HaarXtYt(inner_haar_x[73], inner_haar_y[73], x-32, y, 8, 36);
	HaarXtYtO(inner_haar_x[74], inner_haar_y[74], x-24, y, 8, 37, ori_weight[12]);
	HaarXtYt(inner_haar_x[75], inner_haar_y[75], x-28, y+4, 8, 37);
	HaarXtYt(inner_haar_x[76], inner_haar_y[76], x-24, y+4, 8, 38);
	HaarXtYtO(inner_haar_x[77], inner_haar_y[77], x-20, y+4, 8, 38, ori_weight[10]);
	HaarXtYtO(inner_haar_x[78], inner_haar_y[78], x-16, y+4, 8, 39, ori_weight[6]);
	HaarXtYt(inner_haar_x[79], inner_haar_y[79], x-28, y+8, 8, 39);
	HaarXtYtO(inner_haar_x[80], inner_haar_y[80], x-12, y+4, 8, 40, ori_weight[3]);
	HaarXtYt(inner_haar_x[81], inner_haar_y[81], x-24, y+8, 8, 40);
	HaarXtYt(inner_haar_x[82], inner_haar_y[82], x-28, y+12, 8, 41);
	HaarXtYtO(inner_haar_x[83], inner_haar_y[83], x-16, y+8, 8, 41, ori_weight[8]);
	HaarXtYt(inner_haar_x[84], inner_haar_y[84], x-24, y+12, 8, 42);
	HaarXtYtO(inner_haar_x[85], inner_haar_y[85], x-20, y+12, 8, 42, ori_weight[11]);
	HaarXtYtO(inner_haar_x[86], inner_haar_y[86], x-12, y+8, 8, 43, ori_weight[4]);
	HaarXtYt(inner_haar_x[87], inner_haar_y[87], x-24, y+16, 8, 43);
	HaarXtYt(inner_haar_x[88], inner_haar_y[88], x-20, y+16, 8, 44);
	HaarXtYt(inner_haar_x[89], inner_haar_y[89], x-24, y+20, 8, 44);
	HaarXtYtO(inner_haar_x[90], inner_haar_y[90], x-12, y+12, 8, 45, ori_weight[7]);
	HaarXtYt(inner_haar_x[91], inner_haar_y[91], x-20, y+20, 8, 45);
	HaarXtYt(inner_haar_x[92], inner_haar_y[92], x-20, y+24, 8, 46);
	HaarXtYt(inner_haar_x[93], inner_haar_y[93], x-16, y+20, 8, 46);
	HaarXtYtO(inner_haar_x[94], inner_haar_y[94], x-8, y+12, 8, 47, ori_weight[4]);
	HaarXtYt(inner_haar_x[95], inner_haar_y[95], x-16, y+24, 8, 47);
	HaarXtYtO(inner_haar_x[96], inner_haar_y[96], x-12, y+20, 8, 48, ori_weight[11]);
	HaarXtYt(inner_haar_x[97], inner_haar_y[97], x-12, y+24, 8, 48);
	HaarXtYtO(inner_haar_x[98], inner_haar_y[98], x-8, y+16, 8, 49, ori_weight[8]);
	HaarXtYt(inner_haar_x[99], inner_haar_y[99], x-12, y+28, 8, 49);
	HaarXtYtO(inner_haar_x[100], inner_haar_y[100], x-4, y+12, 8, 50, ori_weight[3]);
	HaarXtYt(inner_haar_x[101], inner_haar_y[101], x-8, y+24, 8, 50);
	HaarXtYt(inner_haar_x[102], inner_haar_y[102], x-8, y+28, 8, 51);
	HaarXtYtO(inner_haar_x[103], inner_haar_y[103], x-4, y+16, 8, 51, ori_weight[6]);
	HaarXtYtO(inner_haar_x[104], inner_haar_y[104], x-4, y+20, 8, 52, ori_weight[10]);
	HaarXtYt(inner_haar_x[105], inner_haar_y[105], x-4, y+24, 8, 52);
	HaarXtYtO(inner_haar_x[106], inner_haar_y[106], x, y+20, 8, 53, ori_weight[9]);
	HaarXtYt(inner_haar_x[107], inner_haar_y[107], x-4, y+28, 8, 53);
	HaarXtYtO(inner_haar_x[108], inner_haar_y[108], x, y+16, 8, 54, ori_weight[5]);
	HaarXtYt(inner_haar_x[109], inner_haar_y[109], x, y+32, 8, 54);
	HaarXtYtO(inner_haar_x[110], inner_haar_y[110], x, y+24, 8, 55, ori_weight[12]);
	HaarXtYt(inner_haar_x[111], inner_haar_y[111], x+4, y+28, 8, 55);
	HaarXtYt(inner_haar_x[112], inner_haar_y[112], x+4, y+24, 8, 56);
	HaarXtYtO(inner_haar_x[113], inner_haar_y[113], x+4, y+20, 8, 56, ori_weight[10]);
	HaarXtYtO(inner_haar_x[114], inner_haar_y[114], x+4, y+16, 8, 57, ori_weight[6]);
	HaarXtYt(inner_haar_x[115], inner_haar_y[115], x+8, y+28, 8, 57);
	HaarXtYtO(inner_haar_x[116], inner_haar_y[116], x+4, y+12, 8, 58, ori_weight[3]);
	HaarXtYt(inner_haar_x[117], inner_haar_y[117], x+8, y+24, 8, 58);
	HaarXtYt(inner_haar_x[118], inner_haar_y[118], x+12, y+28, 8, 59);
	HaarXtYtO(inner_haar_x[119], inner_haar_y[119], x+8, y+16, 8, 59, ori_weight[8]);
	HaarXtYt(inner_haar_x[120], inner_haar_y[120], x+12, y+24, 8, 60);
	HaarXtYtO(inner_haar_x[121], inner_haar_y[121], x+12, y+20, 8, 60, ori_weight[11]);
	HaarXtYtO(inner_haar_x[122], inner_haar_y[122], x+8, y+12, 8, 61, ori_weight[4]);
	HaarXtYt(inner_haar_x[123], inner_haar_y[123], x+16, y+24, 8, 61);
	HaarXtYt(inner_haar_x[124], inner_haar_y[124], x+16, y+20, 8, 62);
	HaarXtYt(inner_haar_x[125], inner_haar_y[125], x+20, y+24, 8, 62);
	HaarXtYtO(inner_haar_x[126], inner_haar_y[126], x+12, y+12, 8, 63, ori_weight[7]);
	HaarXtYt(inner_haar_x[127], inner_haar_y[127], x+20, y+20, 8, 63);
	HaarXtYt(inner_haar_x[128], inner_haar_y[128], x+24, y+20, 8, 64);
	HaarXtYt(inner_haar_x[129], inner_haar_y[129], x+20, y+16, 8, 64);
	HaarXtYtO(inner_haar_x[130], inner_haar_y[130], x+12, y+8, 8, 65, ori_weight[4]);
	HaarXtYt(inner_haar_x[131], inner_haar_y[131], x+24, y+16, 8, 65);
	HaarXtYtO(inner_haar_x[132], inner_haar_y[132], x+20, y+12, 8, 66, ori_weight[11]);
	HaarXtYt(inner_haar_x[133], inner_haar_y[133], x+24, y+12, 8, 66);
	HaarXtYtO(inner_haar_x[134], inner_haar_y[134], x+16, y+8, 8, 67, ori_weight[8]);
	HaarXtYt(inner_haar_x[135], inner_haar_y[135], x+28, y+12, 8, 67);
	HaarXtYtO(inner_haar_x[136], inner_haar_y[136], x+12, y+4, 8, 68, ori_weight[3]);
	HaarXtYt(inner_haar_x[137], inner_haar_y[137], x+24, y+8, 8, 68);
	HaarXtYt(inner_haar_x[138], inner_haar_y[138], x+28, y+8, 8, 69);
	HaarXtYtO(inner_haar_x[139], inner_haar_y[139], x+16, y+4, 8, 69, ori_weight[6]);
	HaarXtYtO(inner_haar_x[140], inner_haar_y[140], x+20, y+4, 8, 70, ori_weight[10]);
	HaarXtYt(inner_haar_x[141], inner_haar_y[141], x+24, y+4, 8, 70);
	HaarXtYtO(inner_haar_x[142], inner_haar_y[142], x+24, y, 8, 71, ori_weight[12]);
	HaarXtYt(inner_haar_x[143], inner_haar_y[143], x+28, y+4, 8, 71);

	HaarXtYt(outer_haar_x[0], outer_haar_y[0], x+36, y, 8, 0);
	HaarXtYt(outer_haar_x[1], outer_haar_y[1], x+48, y, 8, 0);
	HaarXtYt(outer_haar_x[2], outer_haar_y[2], x+60, y, 8, 0);
	HaarXtYt(outer_haar_x[3], outer_haar_y[3], x+56, y-4, 8, 1);
	HaarXtYt(outer_haar_x[4], outer_haar_y[4], x+44, y-4, 8, 1);
	HaarXtYt(outer_haar_x[5], outer_haar_y[5], x+32, y-4, 8, 1);
	HaarXtYt(outer_haar_x[6], outer_haar_y[6], x+48, y-8, 8, 2);
	HaarXtYt(outer_haar_x[7], outer_haar_y[7], x+40, y-8, 8, 2);
	HaarXtYt(outer_haar_x[8], outer_haar_y[8], x+56, y-12, 8, 2);
	HaarXtYt(outer_haar_x[9], outer_haar_y[9], x+32, y-8, 8, 3);
	HaarXtYt(outer_haar_x[10], outer_haar_y[10], x+44, y-12, 8, 3);
	HaarXtYt(outer_haar_x[11], outer_haar_y[11], x+56, y-16, 8, 3);
	HaarXtYt(outer_haar_x[12], outer_haar_y[12], x+56, y-20, 8, 4);
	HaarXtYt(outer_haar_x[13], outer_haar_y[13], x+44, y-16, 8, 4);
	HaarXtYt(outer_haar_x[14], outer_haar_y[14], x+32, y-12, 8, 4);
	HaarXtYt(outer_haar_x[15], outer_haar_y[15], x+52, y-24, 8, 5);
	HaarXtYt(outer_haar_x[16], outer_haar_y[16], x+32, y-16, 8, 5);
	HaarXtYt(outer_haar_x[17], outer_haar_y[17], x+40, y-20, 8, 5);
	HaarXtYt(outer_haar_x[18], outer_haar_y[18], x+52, y-28, 8, 6);
	HaarXtYt(outer_haar_x[19], outer_haar_y[19], x+28, y-16, 8, 6);
	HaarXtYt(outer_haar_x[20], outer_haar_y[20], x+40, y-24, 8, 6);
	HaarXtYt(outer_haar_x[21], outer_haar_y[21], x+40, y-28, 8, 7);
	HaarXtYt(outer_haar_x[22], outer_haar_y[22], x+28, y-20, 8, 7);
	HaarXtYt(outer_haar_x[23], outer_haar_y[23], x+48, y-36, 8, 7);
	HaarXtYt(outer_haar_x[24], outer_haar_y[24], x+28, y-24, 8, 8);
	HaarXtYt(outer_haar_x[25], outer_haar_y[25], x+36, y-32, 8, 8);
	HaarXtYt(outer_haar_x[26], outer_haar_y[26], x+44, y-40, 8, 8);
	HaarXtYt(outer_haar_x[27], outer_haar_y[27], x+24, y-24, 8, 9);
	HaarXtYt(outer_haar_x[28], outer_haar_y[28], x+32, y-32, 8, 9);
	HaarXtYt(outer_haar_x[29], outer_haar_y[29], x+40, y-40, 8, 9);
	HaarXtYt(outer_haar_x[30], outer_haar_y[30], x+40, y-44, 8, 10);
	HaarXtYt(outer_haar_x[31], outer_haar_y[31], x+32, y-36, 8, 10);
	HaarXtYt(outer_haar_x[32], outer_haar_y[32], x+24, y-28, 8, 10);
	HaarXtYt(outer_haar_x[33], outer_haar_y[33], x+36, y-48, 8, 11);
	HaarXtYt(outer_haar_x[34], outer_haar_y[34], x+20, y-28, 8, 11);
	HaarXtYt(outer_haar_x[35], outer_haar_y[35], x+28, y-40, 8, 11);
	HaarXtYt(outer_haar_x[36], outer_haar_y[36], x+24, y-40, 8, 12);
	HaarXtYt(outer_haar_x[37], outer_haar_y[37], x+16, y-28, 8, 12);
	HaarXtYt(outer_haar_x[38], outer_haar_y[38], x+28, y-52, 8, 12);
	HaarXtYt(outer_haar_x[39], outer_haar_y[39], x+16, y-32, 8, 13);
	HaarXtYt(outer_haar_x[40], outer_haar_y[40], x+20, y-40, 8, 13);
	HaarXtYt(outer_haar_x[41], outer_haar_y[41], x+24, y-52, 8, 13);
	HaarXtYt(outer_haar_x[42], outer_haar_y[42], x+12, y-32, 8, 14);
	HaarXtYt(outer_haar_x[43], outer_haar_y[43], x+16, y-44, 8, 14);
	HaarXtYt(outer_haar_x[44], outer_haar_y[44], x+20, y-56, 8, 14);
	HaarXtYt(outer_haar_x[45], outer_haar_y[45], x+16, y-56, 8, 15);
	HaarXtYt(outer_haar_x[46], outer_haar_y[46], x+12, y-44, 8, 15);
	HaarXtYt(outer_haar_x[47], outer_haar_y[47], x+8, y-32, 8, 15);
	HaarXtYt(outer_haar_x[48], outer_haar_y[48], x+12, y-56, 8, 16);
	HaarXtYt(outer_haar_x[49], outer_haar_y[49], x+8, y-40, 8, 16);
	HaarXtYt(outer_haar_x[50], outer_haar_y[50], x+8, y-48, 8, 16);
	HaarXtYt(outer_haar_x[51], outer_haar_y[51], x+4, y-32, 8, 17);
	HaarXtYt(outer_haar_x[52], outer_haar_y[52], x+4, y-44, 8, 17);
	HaarXtYt(outer_haar_x[53], outer_haar_y[53], x+4, y-56, 8, 17);
	HaarXtYt(outer_haar_x[54], outer_haar_y[54], x, y-36, 8, 18);
	HaarXtYt(outer_haar_x[55], outer_haar_y[55], x, y-48, 8, 18);
	HaarXtYt(outer_haar_x[56], outer_haar_y[56], x, y-60, 8, 18);
	HaarXtYt(outer_haar_x[57], outer_haar_y[57], x-4, y-56, 8, 19);
	HaarXtYt(outer_haar_x[58], outer_haar_y[58], x-4, y-44, 8, 19);
	HaarXtYt(outer_haar_x[59], outer_haar_y[59], x-4, y-32, 8, 19);
	HaarXtYt(outer_haar_x[60], outer_haar_y[60], x-8, y-48, 8, 20);
	HaarXtYt(outer_haar_x[61], outer_haar_y[61], x-8, y-40, 8, 20);
	HaarXtYt(outer_haar_x[62], outer_haar_y[62], x-12, y-56, 8, 20);
	HaarXtYt(outer_haar_x[63], outer_haar_y[63], x-8, y-32, 8, 21);
	HaarXtYt(outer_haar_x[64], outer_haar_y[64], x-12, y-44, 8, 21);
	HaarXtYt(outer_haar_x[65], outer_haar_y[65], x-16, y-56, 8, 21);
	HaarXtYt(outer_haar_x[66], outer_haar_y[66], x-20, y-56, 8, 22);
	HaarXtYt(outer_haar_x[67], outer_haar_y[67], x-16, y-44, 8, 22);
	HaarXtYt(outer_haar_x[68], outer_haar_y[68], x-12, y-32, 8, 22);
	HaarXtYt(outer_haar_x[69], outer_haar_y[69], x-24, y-52, 8, 23);
	HaarXtYt(outer_haar_x[70], outer_haar_y[70], x-16, y-32, 8, 23);
	HaarXtYt(outer_haar_x[71], outer_haar_y[71], x-20, y-40, 8, 23);
	HaarXtYt(outer_haar_x[72], outer_haar_y[72], x-28, y-52, 8, 24);
	HaarXtYt(outer_haar_x[73], outer_haar_y[73], x-16, y-28, 8, 24);
	HaarXtYt(outer_haar_x[74], outer_haar_y[74], x-24, y-40, 8, 24);
	HaarXtYt(outer_haar_x[75], outer_haar_y[75], x-28, y-40, 8, 25);
	HaarXtYt(outer_haar_x[76], outer_haar_y[76], x-20, y-28, 8, 25);
	HaarXtYt(outer_haar_x[77], outer_haar_y[77], x-36, y-48, 8, 25);
	HaarXtYt(outer_haar_x[78], outer_haar_y[78], x-24, y-28, 8, 26);
	HaarXtYt(outer_haar_x[79], outer_haar_y[79], x-32, y-36, 8, 26);
	HaarXtYt(outer_haar_x[80], outer_haar_y[80], x-40, y-44, 8, 26);
	HaarXtYt(outer_haar_x[81], outer_haar_y[81], x-24, y-24, 8, 27);
	HaarXtYt(outer_haar_x[82], outer_haar_y[82], x-32, y-32, 8, 27);
	HaarXtYt(outer_haar_x[83], outer_haar_y[83], x-40, y-40, 8, 27);
	HaarXtYt(outer_haar_x[84], outer_haar_y[84], x-44, y-40, 8, 28);
	HaarXtYt(outer_haar_x[85], outer_haar_y[85], x-36, y-32, 8, 28);
	HaarXtYt(outer_haar_x[86], outer_haar_y[86], x-28, y-24, 8, 28);
	HaarXtYt(outer_haar_x[87], outer_haar_y[87], x-48, y-36, 8, 29);
	HaarXtYt(outer_haar_x[88], outer_haar_y[88], x-28, y-20, 8, 29);
	HaarXtYt(outer_haar_x[89], outer_haar_y[89], x-40, y-28, 8, 29);
	HaarXtYt(outer_haar_x[90], outer_haar_y[90], x-40, y-24, 8, 30);
	HaarXtYt(outer_haar_x[91], outer_haar_y[91], x-28, y-16, 8, 30);
	HaarXtYt(outer_haar_x[92], outer_haar_y[92], x-52, y-28, 8, 30);
	HaarXtYt(outer_haar_x[93], outer_haar_y[93], x-32, y-16, 8, 31);
	HaarXtYt(outer_haar_x[94], outer_haar_y[94], x-40, y-20, 8, 31);
	HaarXtYt(outer_haar_x[95], outer_haar_y[95], x-52, y-24, 8, 31);
	HaarXtYt(outer_haar_x[96], outer_haar_y[96], x-32, y-12, 8, 32);
	HaarXtYt(outer_haar_x[97], outer_haar_y[97], x-44, y-16, 8, 32);
	HaarXtYt(outer_haar_x[98], outer_haar_y[98], x-56, y-20, 8, 32);
	HaarXtYt(outer_haar_x[99], outer_haar_y[99], x-56, y-16, 8, 33);
	HaarXtYt(outer_haar_x[100], outer_haar_y[100], x-44, y-12, 8, 33);
	HaarXtYt(outer_haar_x[101], outer_haar_y[101], x-32, y-8, 8, 33);
	HaarXtYt(outer_haar_x[102], outer_haar_y[102], x-56, y-12, 8, 34);
	HaarXtYt(outer_haar_x[103], outer_haar_y[103], x-40, y-8, 8, 34);
	HaarXtYt(outer_haar_x[104], outer_haar_y[104], x-48, y-8, 8, 34);
	HaarXtYt(outer_haar_x[105], outer_haar_y[105], x-32, y-4, 8, 35);
	HaarXtYt(outer_haar_x[106], outer_haar_y[106], x-44, y-4, 8, 35);
	HaarXtYt(outer_haar_x[107], outer_haar_y[107], x-56, y-4, 8, 35);
	HaarXtYt(outer_haar_x[108], outer_haar_y[108], x-36, y, 8, 36);
	HaarXtYt(outer_haar_x[109], outer_haar_y[109], x-48, y, 8, 36);
	HaarXtYt(outer_haar_x[110], outer_haar_y[110], x-60, y, 8, 36);
	HaarXtYt(outer_haar_x[111], outer_haar_y[111], x-56, y+4, 8, 37);
	HaarXtYt(outer_haar_x[112], outer_haar_y[112], x-44, y+4, 8, 37);
	HaarXtYt(outer_haar_x[113], outer_haar_y[113], x-32, y+4, 8, 37);
	HaarXtYt(outer_haar_x[114], outer_haar_y[114], x-48, y+8, 8, 38);
	HaarXtYt(outer_haar_x[115], outer_haar_y[115], x-40, y+8, 8, 38);
	HaarXtYt(outer_haar_x[116], outer_haar_y[116], x-56, y+12, 8, 38);
	HaarXtYt(outer_haar_x[117], outer_haar_y[117], x-32, y+8, 8, 39);
	HaarXtYt(outer_haar_x[118], outer_haar_y[118], x-44, y+12, 8, 39);
	HaarXtYt(outer_haar_x[119], outer_haar_y[119], x-56, y+16, 8, 39);
	HaarXtYt(outer_haar_x[120], outer_haar_y[120], x-56, y+20, 8, 40);
	HaarXtYt(outer_haar_x[121], outer_haar_y[121], x-44, y+16, 8, 40);
	HaarXtYt(outer_haar_x[122], outer_haar_y[122], x-32, y+12, 8, 40);
	HaarXtYt(outer_haar_x[123], outer_haar_y[123], x-52, y+24, 8, 41);
	HaarXtYt(outer_haar_x[124], outer_haar_y[124], x-32, y+16, 8, 41);
	HaarXtYt(outer_haar_x[125], outer_haar_y[125], x-40, y+20, 8, 41);
	HaarXtYt(outer_haar_x[126], outer_haar_y[126], x-52, y+28, 8, 42);
	HaarXtYt(outer_haar_x[127], outer_haar_y[127], x-28, y+16, 8, 42);
	HaarXtYt(outer_haar_x[128], outer_haar_y[128], x-40, y+24, 8, 42);
	HaarXtYt(outer_haar_x[129], outer_haar_y[129], x-40, y+28, 8, 43);
	HaarXtYt(outer_haar_x[130], outer_haar_y[130], x-28, y+20, 8, 43);
	HaarXtYt(outer_haar_x[131], outer_haar_y[131], x-48, y+36, 8, 43);
	HaarXtYt(outer_haar_x[132], outer_haar_y[132], x-28, y+24, 8, 44);
	HaarXtYt(outer_haar_x[133], outer_haar_y[133], x-36, y+32, 8, 44);
	HaarXtYt(outer_haar_x[134], outer_haar_y[134], x-44, y+40, 8, 44);
	HaarXtYt(outer_haar_x[135], outer_haar_y[135], x-24, y+24, 8, 45);
	HaarXtYt(outer_haar_x[136], outer_haar_y[136], x-32, y+32, 8, 45);
	HaarXtYt(outer_haar_x[137], outer_haar_y[137], x-40, y+40, 8, 45);
	HaarXtYt(outer_haar_x[138], outer_haar_y[138], x-40, y+44, 8, 46);
	HaarXtYt(outer_haar_x[139], outer_haar_y[139], x-32, y+36, 8, 46);
	HaarXtYt(outer_haar_x[140], outer_haar_y[140], x-24, y+28, 8, 46);
	HaarXtYt(outer_haar_x[141], outer_haar_y[141], x-36, y+48, 8, 47);
	HaarXtYt(outer_haar_x[142], outer_haar_y[142], x-20, y+28, 8, 47);
	HaarXtYt(outer_haar_x[143], outer_haar_y[143], x-28, y+40, 8, 47);
	HaarXtYt(outer_haar_x[144], outer_haar_y[144], x-24, y+40, 8, 48);
	HaarXtYt(outer_haar_x[145], outer_haar_y[145], x-16, y+28, 8, 48);
	HaarXtYt(outer_haar_x[146], outer_haar_y[146], x-28, y+52, 8, 48);
	HaarXtYt(outer_haar_x[147], outer_haar_y[147], x-16, y+32, 8, 49);
	HaarXtYt(outer_haar_x[148], outer_haar_y[148], x-20, y+40, 8, 49);
	HaarXtYt(outer_haar_x[149], outer_haar_y[149], x-24, y+52, 8, 49);
	HaarXtYt(outer_haar_x[150], outer_haar_y[150], x-12, y+32, 8, 50);
	HaarXtYt(outer_haar_x[151], outer_haar_y[151], x-16, y+44, 8, 50);
	HaarXtYt(outer_haar_x[152], outer_haar_y[152], x-20, y+56, 8, 50);
	HaarXtYt(outer_haar_x[153], outer_haar_y[153], x-16, y+56, 8, 51);
	HaarXtYt(outer_haar_x[154], outer_haar_y[154], x-12, y+44, 8, 51);
	HaarXtYt(outer_haar_x[155], outer_haar_y[155], x-8, y+32, 8, 51);
	HaarXtYt(outer_haar_x[156], outer_haar_y[156], x-12, y+56, 8, 52);
	HaarXtYt(outer_haar_x[157], outer_haar_y[157], x-8, y+40, 8, 52);
	HaarXtYt(outer_haar_x[158], outer_haar_y[158], x-8, y+48, 8, 52);
	HaarXtYt(outer_haar_x[159], outer_haar_y[159], x-4, y+32, 8, 53);
	HaarXtYt(outer_haar_x[160], outer_haar_y[160], x-4, y+44, 8, 53);
	HaarXtYt(outer_haar_x[161], outer_haar_y[161], x-4, y+56, 8, 53);
	HaarXtYt(outer_haar_x[162], outer_haar_y[162], x, y+36, 8, 54);
	HaarXtYt(outer_haar_x[163], outer_haar_y[163], x, y+48, 8, 54);
	HaarXtYt(outer_haar_x[164], outer_haar_y[164], x, y+60, 8, 54);
	HaarXtYt(outer_haar_x[165], outer_haar_y[165], x+4, y+56, 8, 55);
	HaarXtYt(outer_haar_x[166], outer_haar_y[166], x+4, y+44, 8, 55);
	HaarXtYt(outer_haar_x[167], outer_haar_y[167], x+4, y+32, 8, 55);
	HaarXtYt(outer_haar_x[168], outer_haar_y[168], x+8, y+48, 8, 56);
	HaarXtYt(outer_haar_x[169], outer_haar_y[169], x+8, y+40, 8, 56);
	HaarXtYt(outer_haar_x[170], outer_haar_y[170], x+12, y+56, 8, 56);
	HaarXtYt(outer_haar_x[171], outer_haar_y[171], x+8, y+32, 8, 57);
	HaarXtYt(outer_haar_x[172], outer_haar_y[172], x+12, y+44, 8, 57);
	HaarXtYt(outer_haar_x[173], outer_haar_y[173], x+16, y+56, 8, 57);
	HaarXtYt(outer_haar_x[174], outer_haar_y[174], x+20, y+56, 8, 58);
	HaarXtYt(outer_haar_x[175], outer_haar_y[175], x+16, y+44, 8, 58);
	HaarXtYt(outer_haar_x[176], outer_haar_y[176], x+12, y+32, 8, 58);
	HaarXtYt(outer_haar_x[177], outer_haar_y[177], x+24, y+52, 8, 59);
	HaarXtYt(outer_haar_x[178], outer_haar_y[178], x+16, y+32, 8, 59);
	HaarXtYt(outer_haar_x[179], outer_haar_y[179], x+20, y+40, 8, 59);
	HaarXtYt(outer_haar_x[180], outer_haar_y[180], x+28, y+52, 8, 60);
	HaarXtYt(outer_haar_x[181], outer_haar_y[181], x+16, y+28, 8, 60);
	HaarXtYt(outer_haar_x[182], outer_haar_y[182], x+24, y+40, 8, 60);
	HaarXtYt(outer_haar_x[183], outer_haar_y[183], x+28, y+40, 8, 61);
	HaarXtYt(outer_haar_x[184], outer_haar_y[184], x+20, y+28, 8, 61);
	HaarXtYt(outer_haar_x[185], outer_haar_y[185], x+36, y+48, 8, 61);
	HaarXtYt(outer_haar_x[186], outer_haar_y[186], x+24, y+28, 8, 62);
	HaarXtYt(outer_haar_x[187], outer_haar_y[187], x+32, y+36, 8, 62);
	HaarXtYt(outer_haar_x[188], outer_haar_y[188], x+40, y+44, 8, 62);
	HaarXtYt(outer_haar_x[189], outer_haar_y[189], x+24, y+24, 8, 63);
	HaarXtYt(outer_haar_x[190], outer_haar_y[190], x+32, y+32, 8, 63);
	HaarXtYt(outer_haar_x[191], outer_haar_y[191], x+40, y+40, 8, 63);
	HaarXtYt(outer_haar_x[192], outer_haar_y[192], x+44, y+40, 8, 64);
	HaarXtYt(outer_haar_x[193], outer_haar_y[193], x+36, y+32, 8, 64);
	HaarXtYt(outer_haar_x[194], outer_haar_y[194], x+28, y+24, 8, 64);
	HaarXtYt(outer_haar_x[195], outer_haar_y[195], x+48, y+36, 8, 65);
	HaarXtYt(outer_haar_x[196], outer_haar_y[196], x+28, y+20, 8, 65);
	HaarXtYt(outer_haar_x[197], outer_haar_y[197], x+40, y+28, 8, 65);
	HaarXtYt(outer_haar_x[198], outer_haar_y[198], x+40, y+24, 8, 66);
	HaarXtYt(outer_haar_x[199], outer_haar_y[199], x+28, y+16, 8, 66);
	HaarXtYt(outer_haar_x[200], outer_haar_y[200], x+52, y+28, 8, 66);
	HaarXtYt(outer_haar_x[201], outer_haar_y[201], x+32, y+16, 8, 67);
	HaarXtYt(outer_haar_x[202], outer_haar_y[202], x+40, y+20, 8, 67);
	HaarXtYt(outer_haar_x[203], outer_haar_y[203], x+52, y+24, 8, 67);
	HaarXtYt(outer_haar_x[204], outer_haar_y[204], x+32, y+12, 8, 68);
	HaarXtYt(outer_haar_x[205], outer_haar_y[205], x+44, y+16, 8, 68);
	HaarXtYt(outer_haar_x[206], outer_haar_y[206], x+56, y+20, 8, 68);
	HaarXtYt(outer_haar_x[207], outer_haar_y[207], x+56, y+16, 8, 69);
	HaarXtYt(outer_haar_x[208], outer_haar_y[208], x+44, y+12, 8, 69);
	HaarXtYt(outer_haar_x[209], outer_haar_y[209], x+32, y+8, 8, 69);
	HaarXtYt(outer_haar_x[210], outer_haar_y[210], x+56, y+12, 8, 70);
	HaarXtYt(outer_haar_x[211], outer_haar_y[211], x+40, y+8, 8, 70);
	HaarXtYt(outer_haar_x[212], outer_haar_y[212], x+48, y+8, 8, 70);
	HaarXtYt(outer_haar_x[213], outer_haar_y[213], x+32, y+4, 8, 71);
	HaarXtYt(outer_haar_x[214], outer_haar_y[214], x+44, y+4, 8, 71);
	HaarXtYt(outer_haar_x[215], outer_haar_y[215], x+56, y+4, 8, 71);
}

void Scarf::DescriptorResponsesGen5(int x, int y)
{
	ZeroOrientation();

	HaarXYO(center_haar_x[0], center_haar_y[0], x-5, y, 10, ori_weight[0]);
	HaarXYO(center_haar_x[1], center_haar_y[1], x, y+5, 10, ori_weight[0]);
	HaarXYO(center_haar_x[2], center_haar_y[2], x, y-5, 10, ori_weight[0]);
	HaarXYO(center_haar_x[3], center_haar_y[3], x+5, y, 10, ori_weight[0]);
	HaarXYO(center_haar_x[4], center_haar_y[4], x-10, y+5, 10, ori_weight[1]);
	HaarXYO(center_haar_x[5], center_haar_y[5], x-10, y-5, 10, ori_weight[1]);
	HaarXYO(center_haar_x[6], center_haar_y[6], x-5, y+10, 10, ori_weight[1]);
	HaarXYO(center_haar_x[7], center_haar_y[7], x-5, y-10, 10, ori_weight[1]);
	HaarXYO(center_haar_x[8], center_haar_y[8], x+5, y+10, 10, ori_weight[1]);
	HaarXYO(center_haar_x[9], center_haar_y[9], x+5, y-10, 10, ori_weight[1]);
	HaarXYO(center_haar_x[10], center_haar_y[10], x+10, y+5, 10, ori_weight[1]);
	HaarXYO(center_haar_x[11], center_haar_y[11], x+10, y-5, 10, ori_weight[1]);
	HaarXYO(center_haar_x[12], center_haar_y[12], x-15, y, 10, ori_weight[2]);
	HaarXYO(center_haar_x[13], center_haar_y[13], x, y+15, 10, ori_weight[2]);
	HaarXYO(center_haar_x[14], center_haar_y[14], x, y-15, 10, ori_weight[2]);
	HaarXYO(center_haar_x[15], center_haar_y[15], x+15, y, 10, ori_weight[2]);

	HaarXtYtO(inner_haar_x[0], inner_haar_y[0], x+20, y, 10, 0, ori_weight[5]);
	HaarXtYt(inner_haar_x[1], inner_haar_y[1], x+40, y, 10, 0);
	HaarXtYtO(inner_haar_x[2], inner_haar_y[2], x+25, y, 10, 1, ori_weight[9]);
	HaarXtYt(inner_haar_x[3], inner_haar_y[3], x+35, y-5, 10, 1);
	HaarXtYt(inner_haar_x[4], inner_haar_y[4], x+30, y-5, 10, 2);
	HaarXtYtO(inner_haar_x[5], inner_haar_y[5], x+25, y-5, 10, 2, ori_weight[10]);
	HaarXtYtO(inner_haar_x[6], inner_haar_y[6], x+20, y-5, 10, 3, ori_weight[6]);
	HaarXtYt(inner_haar_x[7], inner_haar_y[7], x+35, y-10, 10, 3);
	HaarXtYtO(inner_haar_x[8], inner_haar_y[8], x+15, y-5, 10, 4, ori_weight[3]);
	HaarXtYt(inner_haar_x[9], inner_haar_y[9], x+30, y-10, 10, 4);
	HaarXtYt(inner_haar_x[10], inner_haar_y[10], x+35, y-15, 10, 5);
	HaarXtYtO(inner_haar_x[11], inner_haar_y[11], x+20, y-10, 10, 5, ori_weight[8]);
	HaarXtYt(inner_haar_x[12], inner_haar_y[12], x+30, y-15, 10, 6);
	HaarXtYtO(inner_haar_x[13], inner_haar_y[13], x+25, y-15, 10, 6, ori_weight[11]);
	HaarXtYtO(inner_haar_x[14], inner_haar_y[14], x+15, y-10, 10, 7, ori_weight[4]);
	HaarXtYt(inner_haar_x[15], inner_haar_y[15], x+30, y-20, 10, 7);
	HaarXtYt(inner_haar_x[16], inner_haar_y[16], x+25, y-20, 10, 8);
	HaarXtYt(inner_haar_x[17], inner_haar_y[17], x+30, y-25, 10, 8);
	HaarXtYtO(inner_haar_x[18], inner_haar_y[18], x+15, y-15, 10, 9, ori_weight[7]);
	HaarXtYt(inner_haar_x[19], inner_haar_y[19], x+25, y-25, 10, 9);
	HaarXtYt(inner_haar_x[20], inner_haar_y[20], x+25, y-30, 10, 10);
	HaarXtYt(inner_haar_x[21], inner_haar_y[21], x+20, y-25, 10, 10);
	HaarXtYtO(inner_haar_x[22], inner_haar_y[22], x+10, y-15, 10, 11, ori_weight[4]);
	HaarXtYt(inner_haar_x[23], inner_haar_y[23], x+20, y-30, 10, 11);
	HaarXtYtO(inner_haar_x[24], inner_haar_y[24], x+15, y-25, 10, 12, ori_weight[11]);
	HaarXtYt(inner_haar_x[25], inner_haar_y[25], x+15, y-30, 10, 12);
	HaarXtYtO(inner_haar_x[26], inner_haar_y[26], x+10, y-20, 10, 13, ori_weight[8]);
	HaarXtYt(inner_haar_x[27], inner_haar_y[27], x+15, y-35, 10, 13);
	HaarXtYtO(inner_haar_x[28], inner_haar_y[28], x+5, y-15, 10, 14, ori_weight[3]);
	HaarXtYt(inner_haar_x[29], inner_haar_y[29], x+10, y-30, 10, 14);
	HaarXtYt(inner_haar_x[30], inner_haar_y[30], x+10, y-35, 10, 15);
	HaarXtYtO(inner_haar_x[31], inner_haar_y[31], x+5, y-20, 10, 15, ori_weight[6]);
	HaarXtYtO(inner_haar_x[32], inner_haar_y[32], x+5, y-25, 10, 16, ori_weight[10]);
	HaarXtYt(inner_haar_x[33], inner_haar_y[33], x+5, y-30, 10, 16);
	HaarXtYtO(inner_haar_x[34], inner_haar_y[34], x, y-25, 10, 17, ori_weight[9]);
	HaarXtYt(inner_haar_x[35], inner_haar_y[35], x+5, y-35, 10, 17);
	HaarXtYtO(inner_haar_x[36], inner_haar_y[36], x, y-20, 10, 18, ori_weight[5]);
	HaarXtYt(inner_haar_x[37], inner_haar_y[37], x, y-40, 10, 18);
	HaarXtYtO(inner_haar_x[38], inner_haar_y[38], x, y-30, 10, 19, ori_weight[12]);
	HaarXtYt(inner_haar_x[39], inner_haar_y[39], x-5, y-35, 10, 19);
	HaarXtYt(inner_haar_x[40], inner_haar_y[40], x-5, y-30, 10, 20);
	HaarXtYtO(inner_haar_x[41], inner_haar_y[41], x-5, y-25, 10, 20, ori_weight[10]);
	HaarXtYtO(inner_haar_x[42], inner_haar_y[42], x-5, y-20, 10, 21, ori_weight[6]);
	HaarXtYt(inner_haar_x[43], inner_haar_y[43], x-10, y-35, 10, 21);
	HaarXtYtO(inner_haar_x[44], inner_haar_y[44], x-5, y-15, 10, 22, ori_weight[3]);
	HaarXtYt(inner_haar_x[45], inner_haar_y[45], x-10, y-30, 10, 22);
	HaarXtYt(inner_haar_x[46], inner_haar_y[46], x-15, y-35, 10, 23);
	HaarXtYtO(inner_haar_x[47], inner_haar_y[47], x-10, y-20, 10, 23, ori_weight[8]);
	HaarXtYt(inner_haar_x[48], inner_haar_y[48], x-15, y-30, 10, 24);
	HaarXtYtO(inner_haar_x[49], inner_haar_y[49], x-15, y-25, 10, 24, ori_weight[11]);
	HaarXtYtO(inner_haar_x[50], inner_haar_y[50], x-10, y-15, 10, 25, ori_weight[4]);
	HaarXtYt(inner_haar_x[51], inner_haar_y[51], x-20, y-30, 10, 25);
	HaarXtYt(inner_haar_x[52], inner_haar_y[52], x-20, y-25, 10, 26);
	HaarXtYt(inner_haar_x[53], inner_haar_y[53], x-25, y-30, 10, 26);
	HaarXtYtO(inner_haar_x[54], inner_haar_y[54], x-15, y-15, 10, 27, ori_weight[7]);
	HaarXtYt(inner_haar_x[55], inner_haar_y[55], x-25, y-25, 10, 27);
	HaarXtYt(inner_haar_x[56], inner_haar_y[56], x-30, y-25, 10, 28);
	HaarXtYt(inner_haar_x[57], inner_haar_y[57], x-25, y-20, 10, 28);
	HaarXtYtO(inner_haar_x[58], inner_haar_y[58], x-15, y-10, 10, 29, ori_weight[4]);
	HaarXtYt(inner_haar_x[59], inner_haar_y[59], x-30, y-20, 10, 29);
	HaarXtYtO(inner_haar_x[60], inner_haar_y[60], x-25, y-15, 10, 30, ori_weight[11]);
	HaarXtYt(inner_haar_x[61], inner_haar_y[61], x-30, y-15, 10, 30);
	HaarXtYtO(inner_haar_x[62], inner_haar_y[62], x-20, y-10, 10, 31, ori_weight[8]);
	HaarXtYt(inner_haar_x[63], inner_haar_y[63], x-35, y-15, 10, 31);
	HaarXtYtO(inner_haar_x[64], inner_haar_y[64], x-15, y-5, 10, 32, ori_weight[3]);
	HaarXtYt(inner_haar_x[65], inner_haar_y[65], x-30, y-10, 10, 32);
	HaarXtYt(inner_haar_x[66], inner_haar_y[66], x-35, y-10, 10, 33);
	HaarXtYtO(inner_haar_x[67], inner_haar_y[67], x-20, y-5, 10, 33, ori_weight[6]);
	HaarXtYtO(inner_haar_x[68], inner_haar_y[68], x-25, y-5, 10, 34, ori_weight[10]);
	HaarXtYt(inner_haar_x[69], inner_haar_y[69], x-30, y-5, 10, 34);
	HaarXtYtO(inner_haar_x[70], inner_haar_y[70], x-25, y, 10, 35, ori_weight[9]);
	HaarXtYt(inner_haar_x[71], inner_haar_y[71], x-35, y-5, 10, 35);
	HaarXtYtO(inner_haar_x[72], inner_haar_y[72], x-20, y, 10, 36, ori_weight[5]);
	HaarXtYt(inner_haar_x[73], inner_haar_y[73], x-40, y, 10, 36);
	HaarXtYtO(inner_haar_x[74], inner_haar_y[74], x-30, y, 10, 37, ori_weight[12]);
	HaarXtYt(inner_haar_x[75], inner_haar_y[75], x-35, y+5, 10, 37);
	HaarXtYt(inner_haar_x[76], inner_haar_y[76], x-30, y+5, 10, 38);
	HaarXtYtO(inner_haar_x[77], inner_haar_y[77], x-25, y+5, 10, 38, ori_weight[10]);
	HaarXtYtO(inner_haar_x[78], inner_haar_y[78], x-20, y+5, 10, 39, ori_weight[6]);
	HaarXtYt(inner_haar_x[79], inner_haar_y[79], x-35, y+10, 10, 39);
	HaarXtYtO(inner_haar_x[80], inner_haar_y[80], x-15, y+5, 10, 40, ori_weight[3]);
	HaarXtYt(inner_haar_x[81], inner_haar_y[81], x-30, y+10, 10, 40);
	HaarXtYt(inner_haar_x[82], inner_haar_y[82], x-35, y+15, 10, 41);
	HaarXtYtO(inner_haar_x[83], inner_haar_y[83], x-20, y+10, 10, 41, ori_weight[8]);
	HaarXtYt(inner_haar_x[84], inner_haar_y[84], x-30, y+15, 10, 42);
	HaarXtYtO(inner_haar_x[85], inner_haar_y[85], x-25, y+15, 10, 42, ori_weight[11]);
	HaarXtYtO(inner_haar_x[86], inner_haar_y[86], x-15, y+10, 10, 43, ori_weight[4]);
	HaarXtYt(inner_haar_x[87], inner_haar_y[87], x-30, y+20, 10, 43);
	HaarXtYt(inner_haar_x[88], inner_haar_y[88], x-25, y+20, 10, 44);
	HaarXtYt(inner_haar_x[89], inner_haar_y[89], x-30, y+25, 10, 44);
	HaarXtYtO(inner_haar_x[90], inner_haar_y[90], x-15, y+15, 10, 45, ori_weight[7]);
	HaarXtYt(inner_haar_x[91], inner_haar_y[91], x-25, y+25, 10, 45);
	HaarXtYt(inner_haar_x[92], inner_haar_y[92], x-25, y+30, 10, 46);
	HaarXtYt(inner_haar_x[93], inner_haar_y[93], x-20, y+25, 10, 46);
	HaarXtYtO(inner_haar_x[94], inner_haar_y[94], x-10, y+15, 10, 47, ori_weight[4]);
	HaarXtYt(inner_haar_x[95], inner_haar_y[95], x-20, y+30, 10, 47);
	HaarXtYtO(inner_haar_x[96], inner_haar_y[96], x-15, y+25, 10, 48, ori_weight[11]);
	HaarXtYt(inner_haar_x[97], inner_haar_y[97], x-15, y+30, 10, 48);
	HaarXtYtO(inner_haar_x[98], inner_haar_y[98], x-10, y+20, 10, 49, ori_weight[8]);
	HaarXtYt(inner_haar_x[99], inner_haar_y[99], x-15, y+35, 10, 49);
	HaarXtYtO(inner_haar_x[100], inner_haar_y[100], x-5, y+15, 10, 50, ori_weight[3]);
	HaarXtYt(inner_haar_x[101], inner_haar_y[101], x-10, y+30, 10, 50);
	HaarXtYt(inner_haar_x[102], inner_haar_y[102], x-10, y+35, 10, 51);
	HaarXtYtO(inner_haar_x[103], inner_haar_y[103], x-5, y+20, 10, 51, ori_weight[6]);
	HaarXtYtO(inner_haar_x[104], inner_haar_y[104], x-5, y+25, 10, 52, ori_weight[10]);
	HaarXtYt(inner_haar_x[105], inner_haar_y[105], x-5, y+30, 10, 52);
	HaarXtYtO(inner_haar_x[106], inner_haar_y[106], x, y+25, 10, 53, ori_weight[9]);
	HaarXtYt(inner_haar_x[107], inner_haar_y[107], x-5, y+35, 10, 53);
	HaarXtYtO(inner_haar_x[108], inner_haar_y[108], x, y+20, 10, 54, ori_weight[5]);
	HaarXtYt(inner_haar_x[109], inner_haar_y[109], x, y+40, 10, 54);
	HaarXtYtO(inner_haar_x[110], inner_haar_y[110], x, y+30, 10, 55, ori_weight[12]);
	HaarXtYt(inner_haar_x[111], inner_haar_y[111], x+5, y+35, 10, 55);
	HaarXtYt(inner_haar_x[112], inner_haar_y[112], x+5, y+30, 10, 56);
	HaarXtYtO(inner_haar_x[113], inner_haar_y[113], x+5, y+25, 10, 56, ori_weight[10]);
	HaarXtYtO(inner_haar_x[114], inner_haar_y[114], x+5, y+20, 10, 57, ori_weight[6]);
	HaarXtYt(inner_haar_x[115], inner_haar_y[115], x+10, y+35, 10, 57);
	HaarXtYtO(inner_haar_x[116], inner_haar_y[116], x+5, y+15, 10, 58, ori_weight[3]);
	HaarXtYt(inner_haar_x[117], inner_haar_y[117], x+10, y+30, 10, 58);
	HaarXtYt(inner_haar_x[118], inner_haar_y[118], x+15, y+35, 10, 59);
	HaarXtYtO(inner_haar_x[119], inner_haar_y[119], x+10, y+20, 10, 59, ori_weight[8]);
	HaarXtYt(inner_haar_x[120], inner_haar_y[120], x+15, y+30, 10, 60);
	HaarXtYtO(inner_haar_x[121], inner_haar_y[121], x+15, y+25, 10, 60, ori_weight[11]);
	HaarXtYtO(inner_haar_x[122], inner_haar_y[122], x+10, y+15, 10, 61, ori_weight[4]);
	HaarXtYt(inner_haar_x[123], inner_haar_y[123], x+20, y+30, 10, 61);
	HaarXtYt(inner_haar_x[124], inner_haar_y[124], x+20, y+25, 10, 62);
	HaarXtYt(inner_haar_x[125], inner_haar_y[125], x+25, y+30, 10, 62);
	HaarXtYtO(inner_haar_x[126], inner_haar_y[126], x+15, y+15, 10, 63, ori_weight[7]);
	HaarXtYt(inner_haar_x[127], inner_haar_y[127], x+25, y+25, 10, 63);
	HaarXtYt(inner_haar_x[128], inner_haar_y[128], x+30, y+25, 10, 64);
	HaarXtYt(inner_haar_x[129], inner_haar_y[129], x+25, y+20, 10, 64);
	HaarXtYtO(inner_haar_x[130], inner_haar_y[130], x+15, y+10, 10, 65, ori_weight[4]);
	HaarXtYt(inner_haar_x[131], inner_haar_y[131], x+30, y+20, 10, 65);
	HaarXtYtO(inner_haar_x[132], inner_haar_y[132], x+25, y+15, 10, 66, ori_weight[11]);
	HaarXtYt(inner_haar_x[133], inner_haar_y[133], x+30, y+15, 10, 66);
	HaarXtYtO(inner_haar_x[134], inner_haar_y[134], x+20, y+10, 10, 67, ori_weight[8]);
	HaarXtYt(inner_haar_x[135], inner_haar_y[135], x+35, y+15, 10, 67);
	HaarXtYtO(inner_haar_x[136], inner_haar_y[136], x+15, y+5, 10, 68, ori_weight[3]);
	HaarXtYt(inner_haar_x[137], inner_haar_y[137], x+30, y+10, 10, 68);
	HaarXtYt(inner_haar_x[138], inner_haar_y[138], x+35, y+10, 10, 69);
	HaarXtYtO(inner_haar_x[139], inner_haar_y[139], x+20, y+5, 10, 69, ori_weight[6]);
	HaarXtYtO(inner_haar_x[140], inner_haar_y[140], x+25, y+5, 10, 70, ori_weight[10]);
	HaarXtYt(inner_haar_x[141], inner_haar_y[141], x+30, y+5, 10, 70);
	HaarXtYtO(inner_haar_x[142], inner_haar_y[142], x+30, y, 10, 71, ori_weight[12]);
	HaarXtYt(inner_haar_x[143], inner_haar_y[143], x+35, y+5, 10, 71);

	HaarXtYt(outer_haar_x[0], outer_haar_y[0], x+45, y, 10, 0);
	HaarXtYt(outer_haar_x[1], outer_haar_y[1], x+60, y, 10, 0);
	HaarXtYt(outer_haar_x[2], outer_haar_y[2], x+75, y, 10, 0);
	HaarXtYt(outer_haar_x[3], outer_haar_y[3], x+70, y-5, 10, 1);
	HaarXtYt(outer_haar_x[4], outer_haar_y[4], x+55, y-5, 10, 1);
	HaarXtYt(outer_haar_x[5], outer_haar_y[5], x+40, y-5, 10, 1);
	HaarXtYt(outer_haar_x[6], outer_haar_y[6], x+60, y-10, 10, 2);
	HaarXtYt(outer_haar_x[7], outer_haar_y[7], x+50, y-10, 10, 2);
	HaarXtYt(outer_haar_x[8], outer_haar_y[8], x+70, y-15, 10, 2);
	HaarXtYt(outer_haar_x[9], outer_haar_y[9], x+40, y-10, 10, 3);
	HaarXtYt(outer_haar_x[10], outer_haar_y[10], x+55, y-15, 10, 3);
	HaarXtYt(outer_haar_x[11], outer_haar_y[11], x+70, y-20, 10, 3);
	HaarXtYt(outer_haar_x[12], outer_haar_y[12], x+70, y-25, 10, 4);
	HaarXtYt(outer_haar_x[13], outer_haar_y[13], x+55, y-20, 10, 4);
	HaarXtYt(outer_haar_x[14], outer_haar_y[14], x+40, y-15, 10, 4);
	HaarXtYt(outer_haar_x[15], outer_haar_y[15], x+65, y-30, 10, 5);
	HaarXtYt(outer_haar_x[16], outer_haar_y[16], x+40, y-20, 10, 5);
	HaarXtYt(outer_haar_x[17], outer_haar_y[17], x+50, y-25, 10, 5);
	HaarXtYt(outer_haar_x[18], outer_haar_y[18], x+65, y-35, 10, 6);
	HaarXtYt(outer_haar_x[19], outer_haar_y[19], x+35, y-20, 10, 6);
	HaarXtYt(outer_haar_x[20], outer_haar_y[20], x+50, y-30, 10, 6);
	HaarXtYt(outer_haar_x[21], outer_haar_y[21], x+50, y-35, 10, 7);
	HaarXtYt(outer_haar_x[22], outer_haar_y[22], x+35, y-25, 10, 7);
	HaarXtYt(outer_haar_x[23], outer_haar_y[23], x+60, y-45, 10, 7);
	HaarXtYt(outer_haar_x[24], outer_haar_y[24], x+35, y-30, 10, 8);
	HaarXtYt(outer_haar_x[25], outer_haar_y[25], x+45, y-40, 10, 8);
	HaarXtYt(outer_haar_x[26], outer_haar_y[26], x+55, y-50, 10, 8);
	HaarXtYt(outer_haar_x[27], outer_haar_y[27], x+30, y-30, 10, 9);
	HaarXtYt(outer_haar_x[28], outer_haar_y[28], x+40, y-40, 10, 9);
	HaarXtYt(outer_haar_x[29], outer_haar_y[29], x+50, y-50, 10, 9);
	HaarXtYt(outer_haar_x[30], outer_haar_y[30], x+50, y-55, 10, 10);
	HaarXtYt(outer_haar_x[31], outer_haar_y[31], x+40, y-45, 10, 10);
	HaarXtYt(outer_haar_x[32], outer_haar_y[32], x+30, y-35, 10, 10);
	HaarXtYt(outer_haar_x[33], outer_haar_y[33], x+45, y-60, 10, 11);
	HaarXtYt(outer_haar_x[34], outer_haar_y[34], x+25, y-35, 10, 11);
	HaarXtYt(outer_haar_x[35], outer_haar_y[35], x+35, y-50, 10, 11);
	HaarXtYt(outer_haar_x[36], outer_haar_y[36], x+30, y-50, 10, 12);
	HaarXtYt(outer_haar_x[37], outer_haar_y[37], x+20, y-35, 10, 12);
	HaarXtYt(outer_haar_x[38], outer_haar_y[38], x+35, y-65, 10, 12);
	HaarXtYt(outer_haar_x[39], outer_haar_y[39], x+20, y-40, 10, 13);
	HaarXtYt(outer_haar_x[40], outer_haar_y[40], x+25, y-50, 10, 13);
	HaarXtYt(outer_haar_x[41], outer_haar_y[41], x+30, y-65, 10, 13);
	HaarXtYt(outer_haar_x[42], outer_haar_y[42], x+15, y-40, 10, 14);
	HaarXtYt(outer_haar_x[43], outer_haar_y[43], x+20, y-55, 10, 14);
	HaarXtYt(outer_haar_x[44], outer_haar_y[44], x+25, y-70, 10, 14);
	HaarXtYt(outer_haar_x[45], outer_haar_y[45], x+20, y-70, 10, 15);
	HaarXtYt(outer_haar_x[46], outer_haar_y[46], x+15, y-55, 10, 15);
	HaarXtYt(outer_haar_x[47], outer_haar_y[47], x+10, y-40, 10, 15);
	HaarXtYt(outer_haar_x[48], outer_haar_y[48], x+15, y-70, 10, 16);
	HaarXtYt(outer_haar_x[49], outer_haar_y[49], x+10, y-50, 10, 16);
	HaarXtYt(outer_haar_x[50], outer_haar_y[50], x+10, y-60, 10, 16);
	HaarXtYt(outer_haar_x[51], outer_haar_y[51], x+5, y-40, 10, 17);
	HaarXtYt(outer_haar_x[52], outer_haar_y[52], x+5, y-55, 10, 17);
	HaarXtYt(outer_haar_x[53], outer_haar_y[53], x+5, y-70, 10, 17);
	HaarXtYt(outer_haar_x[54], outer_haar_y[54], x, y-45, 10, 18);
	HaarXtYt(outer_haar_x[55], outer_haar_y[55], x, y-60, 10, 18);
	HaarXtYt(outer_haar_x[56], outer_haar_y[56], x, y-75, 10, 18);
	HaarXtYt(outer_haar_x[57], outer_haar_y[57], x-5, y-70, 10, 19);
	HaarXtYt(outer_haar_x[58], outer_haar_y[58], x-5, y-55, 10, 19);
	HaarXtYt(outer_haar_x[59], outer_haar_y[59], x-5, y-40, 10, 19);
	HaarXtYt(outer_haar_x[60], outer_haar_y[60], x-10, y-60, 10, 20);
	HaarXtYt(outer_haar_x[61], outer_haar_y[61], x-10, y-50, 10, 20);
	HaarXtYt(outer_haar_x[62], outer_haar_y[62], x-15, y-70, 10, 20);
	HaarXtYt(outer_haar_x[63], outer_haar_y[63], x-10, y-40, 10, 21);
	HaarXtYt(outer_haar_x[64], outer_haar_y[64], x-15, y-55, 10, 21);
	HaarXtYt(outer_haar_x[65], outer_haar_y[65], x-20, y-70, 10, 21);
	HaarXtYt(outer_haar_x[66], outer_haar_y[66], x-25, y-70, 10, 22);
	HaarXtYt(outer_haar_x[67], outer_haar_y[67], x-20, y-55, 10, 22);
	HaarXtYt(outer_haar_x[68], outer_haar_y[68], x-15, y-40, 10, 22);
	HaarXtYt(outer_haar_x[69], outer_haar_y[69], x-30, y-65, 10, 23);
	HaarXtYt(outer_haar_x[70], outer_haar_y[70], x-20, y-40, 10, 23);
	HaarXtYt(outer_haar_x[71], outer_haar_y[71], x-25, y-50, 10, 23);
	HaarXtYt(outer_haar_x[72], outer_haar_y[72], x-35, y-65, 10, 24);
	HaarXtYt(outer_haar_x[73], outer_haar_y[73], x-20, y-35, 10, 24);
	HaarXtYt(outer_haar_x[74], outer_haar_y[74], x-30, y-50, 10, 24);
	HaarXtYt(outer_haar_x[75], outer_haar_y[75], x-35, y-50, 10, 25);
	HaarXtYt(outer_haar_x[76], outer_haar_y[76], x-25, y-35, 10, 25);
	HaarXtYt(outer_haar_x[77], outer_haar_y[77], x-45, y-60, 10, 25);
	HaarXtYt(outer_haar_x[78], outer_haar_y[78], x-30, y-35, 10, 26);
	HaarXtYt(outer_haar_x[79], outer_haar_y[79], x-40, y-45, 10, 26);
	HaarXtYt(outer_haar_x[80], outer_haar_y[80], x-50, y-55, 10, 26);
	HaarXtYt(outer_haar_x[81], outer_haar_y[81], x-30, y-30, 10, 27);
	HaarXtYt(outer_haar_x[82], outer_haar_y[82], x-40, y-40, 10, 27);
	HaarXtYt(outer_haar_x[83], outer_haar_y[83], x-50, y-50, 10, 27);
	HaarXtYt(outer_haar_x[84], outer_haar_y[84], x-55, y-50, 10, 28);
	HaarXtYt(outer_haar_x[85], outer_haar_y[85], x-45, y-40, 10, 28);
	HaarXtYt(outer_haar_x[86], outer_haar_y[86], x-35, y-30, 10, 28);
	HaarXtYt(outer_haar_x[87], outer_haar_y[87], x-60, y-45, 10, 29);
	HaarXtYt(outer_haar_x[88], outer_haar_y[88], x-35, y-25, 10, 29);
	HaarXtYt(outer_haar_x[89], outer_haar_y[89], x-50, y-35, 10, 29);
	HaarXtYt(outer_haar_x[90], outer_haar_y[90], x-50, y-30, 10, 30);
	HaarXtYt(outer_haar_x[91], outer_haar_y[91], x-35, y-20, 10, 30);
	HaarXtYt(outer_haar_x[92], outer_haar_y[92], x-65, y-35, 10, 30);
	HaarXtYt(outer_haar_x[93], outer_haar_y[93], x-40, y-20, 10, 31);
	HaarXtYt(outer_haar_x[94], outer_haar_y[94], x-50, y-25, 10, 31);
	HaarXtYt(outer_haar_x[95], outer_haar_y[95], x-65, y-30, 10, 31);
	HaarXtYt(outer_haar_x[96], outer_haar_y[96], x-40, y-15, 10, 32);
	HaarXtYt(outer_haar_x[97], outer_haar_y[97], x-55, y-20, 10, 32);
	HaarXtYt(outer_haar_x[98], outer_haar_y[98], x-70, y-25, 10, 32);
	HaarXtYt(outer_haar_x[99], outer_haar_y[99], x-70, y-20, 10, 33);
	HaarXtYt(outer_haar_x[100], outer_haar_y[100], x-55, y-15, 10, 33);
	HaarXtYt(outer_haar_x[101], outer_haar_y[101], x-40, y-10, 10, 33);
	HaarXtYt(outer_haar_x[102], outer_haar_y[102], x-70, y-15, 10, 34);
	HaarXtYt(outer_haar_x[103], outer_haar_y[103], x-50, y-10, 10, 34);
	HaarXtYt(outer_haar_x[104], outer_haar_y[104], x-60, y-10, 10, 34);
	HaarXtYt(outer_haar_x[105], outer_haar_y[105], x-40, y-5, 10, 35);
	HaarXtYt(outer_haar_x[106], outer_haar_y[106], x-55, y-5, 10, 35);
	HaarXtYt(outer_haar_x[107], outer_haar_y[107], x-70, y-5, 10, 35);
	HaarXtYt(outer_haar_x[108], outer_haar_y[108], x-45, y, 10, 36);
	HaarXtYt(outer_haar_x[109], outer_haar_y[109], x-60, y, 10, 36);
	HaarXtYt(outer_haar_x[110], outer_haar_y[110], x-75, y, 10, 36);
	HaarXtYt(outer_haar_x[111], outer_haar_y[111], x-70, y+5, 10, 37);
	HaarXtYt(outer_haar_x[112], outer_haar_y[112], x-55, y+5, 10, 37);
	HaarXtYt(outer_haar_x[113], outer_haar_y[113], x-40, y+5, 10, 37);
	HaarXtYt(outer_haar_x[114], outer_haar_y[114], x-60, y+10, 10, 38);
	HaarXtYt(outer_haar_x[115], outer_haar_y[115], x-50, y+10, 10, 38);
	HaarXtYt(outer_haar_x[116], outer_haar_y[116], x-70, y+15, 10, 38);
	HaarXtYt(outer_haar_x[117], outer_haar_y[117], x-40, y+10, 10, 39);
	HaarXtYt(outer_haar_x[118], outer_haar_y[118], x-55, y+15, 10, 39);
	HaarXtYt(outer_haar_x[119], outer_haar_y[119], x-70, y+20, 10, 39);
	HaarXtYt(outer_haar_x[120], outer_haar_y[120], x-70, y+25, 10, 40);
	HaarXtYt(outer_haar_x[121], outer_haar_y[121], x-55, y+20, 10, 40);
	HaarXtYt(outer_haar_x[122], outer_haar_y[122], x-40, y+15, 10, 40);
	HaarXtYt(outer_haar_x[123], outer_haar_y[123], x-65, y+30, 10, 41);
	HaarXtYt(outer_haar_x[124], outer_haar_y[124], x-40, y+20, 10, 41);
	HaarXtYt(outer_haar_x[125], outer_haar_y[125], x-50, y+25, 10, 41);
	HaarXtYt(outer_haar_x[126], outer_haar_y[126], x-65, y+35, 10, 42);
	HaarXtYt(outer_haar_x[127], outer_haar_y[127], x-35, y+20, 10, 42);
	HaarXtYt(outer_haar_x[128], outer_haar_y[128], x-50, y+30, 10, 42);
	HaarXtYt(outer_haar_x[129], outer_haar_y[129], x-50, y+35, 10, 43);
	HaarXtYt(outer_haar_x[130], outer_haar_y[130], x-35, y+25, 10, 43);
	HaarXtYt(outer_haar_x[131], outer_haar_y[131], x-60, y+45, 10, 43);
	HaarXtYt(outer_haar_x[132], outer_haar_y[132], x-35, y+30, 10, 44);
	HaarXtYt(outer_haar_x[133], outer_haar_y[133], x-45, y+40, 10, 44);
	HaarXtYt(outer_haar_x[134], outer_haar_y[134], x-55, y+50, 10, 44);
	HaarXtYt(outer_haar_x[135], outer_haar_y[135], x-30, y+30, 10, 45);
	HaarXtYt(outer_haar_x[136], outer_haar_y[136], x-40, y+40, 10, 45);
	HaarXtYt(outer_haar_x[137], outer_haar_y[137], x-50, y+50, 10, 45);
	HaarXtYt(outer_haar_x[138], outer_haar_y[138], x-50, y+55, 10, 46);
	HaarXtYt(outer_haar_x[139], outer_haar_y[139], x-40, y+45, 10, 46);
	HaarXtYt(outer_haar_x[140], outer_haar_y[140], x-30, y+35, 10, 46);
	HaarXtYt(outer_haar_x[141], outer_haar_y[141], x-45, y+60, 10, 47);
	HaarXtYt(outer_haar_x[142], outer_haar_y[142], x-25, y+35, 10, 47);
	HaarXtYt(outer_haar_x[143], outer_haar_y[143], x-35, y+50, 10, 47);
	HaarXtYt(outer_haar_x[144], outer_haar_y[144], x-30, y+50, 10, 48);
	HaarXtYt(outer_haar_x[145], outer_haar_y[145], x-20, y+35, 10, 48);
	HaarXtYt(outer_haar_x[146], outer_haar_y[146], x-35, y+65, 10, 48);
	HaarXtYt(outer_haar_x[147], outer_haar_y[147], x-20, y+40, 10, 49);
	HaarXtYt(outer_haar_x[148], outer_haar_y[148], x-25, y+50, 10, 49);
	HaarXtYt(outer_haar_x[149], outer_haar_y[149], x-30, y+65, 10, 49);
	HaarXtYt(outer_haar_x[150], outer_haar_y[150], x-15, y+40, 10, 50);
	HaarXtYt(outer_haar_x[151], outer_haar_y[151], x-20, y+55, 10, 50);
	HaarXtYt(outer_haar_x[152], outer_haar_y[152], x-25, y+70, 10, 50);
	HaarXtYt(outer_haar_x[153], outer_haar_y[153], x-20, y+70, 10, 51);
	HaarXtYt(outer_haar_x[154], outer_haar_y[154], x-15, y+55, 10, 51);
	HaarXtYt(outer_haar_x[155], outer_haar_y[155], x-10, y+40, 10, 51);
	HaarXtYt(outer_haar_x[156], outer_haar_y[156], x-15, y+70, 10, 52);
	HaarXtYt(outer_haar_x[157], outer_haar_y[157], x-10, y+50, 10, 52);
	HaarXtYt(outer_haar_x[158], outer_haar_y[158], x-10, y+60, 10, 52);
	HaarXtYt(outer_haar_x[159], outer_haar_y[159], x-5, y+40, 10, 53);
	HaarXtYt(outer_haar_x[160], outer_haar_y[160], x-5, y+55, 10, 53);
	HaarXtYt(outer_haar_x[161], outer_haar_y[161], x-5, y+70, 10, 53);
	HaarXtYt(outer_haar_x[162], outer_haar_y[162], x, y+45, 10, 54);
	HaarXtYt(outer_haar_x[163], outer_haar_y[163], x, y+60, 10, 54);
	HaarXtYt(outer_haar_x[164], outer_haar_y[164], x, y+75, 10, 54);
	HaarXtYt(outer_haar_x[165], outer_haar_y[165], x+5, y+70, 10, 55);
	HaarXtYt(outer_haar_x[166], outer_haar_y[166], x+5, y+55, 10, 55);
	HaarXtYt(outer_haar_x[167], outer_haar_y[167], x+5, y+40, 10, 55);
	HaarXtYt(outer_haar_x[168], outer_haar_y[168], x+10, y+60, 10, 56);
	HaarXtYt(outer_haar_x[169], outer_haar_y[169], x+10, y+50, 10, 56);
	HaarXtYt(outer_haar_x[170], outer_haar_y[170], x+15, y+70, 10, 56);
	HaarXtYt(outer_haar_x[171], outer_haar_y[171], x+10, y+40, 10, 57);
	HaarXtYt(outer_haar_x[172], outer_haar_y[172], x+15, y+55, 10, 57);
	HaarXtYt(outer_haar_x[173], outer_haar_y[173], x+20, y+70, 10, 57);
	HaarXtYt(outer_haar_x[174], outer_haar_y[174], x+25, y+70, 10, 58);
	HaarXtYt(outer_haar_x[175], outer_haar_y[175], x+20, y+55, 10, 58);
	HaarXtYt(outer_haar_x[176], outer_haar_y[176], x+15, y+40, 10, 58);
	HaarXtYt(outer_haar_x[177], outer_haar_y[177], x+30, y+65, 10, 59);
	HaarXtYt(outer_haar_x[178], outer_haar_y[178], x+20, y+40, 10, 59);
	HaarXtYt(outer_haar_x[179], outer_haar_y[179], x+25, y+50, 10, 59);
	HaarXtYt(outer_haar_x[180], outer_haar_y[180], x+35, y+65, 10, 60);
	HaarXtYt(outer_haar_x[181], outer_haar_y[181], x+20, y+35, 10, 60);
	HaarXtYt(outer_haar_x[182], outer_haar_y[182], x+30, y+50, 10, 60);
	HaarXtYt(outer_haar_x[183], outer_haar_y[183], x+35, y+50, 10, 61);
	HaarXtYt(outer_haar_x[184], outer_haar_y[184], x+25, y+35, 10, 61);
	HaarXtYt(outer_haar_x[185], outer_haar_y[185], x+45, y+60, 10, 61);
	HaarXtYt(outer_haar_x[186], outer_haar_y[186], x+30, y+35, 10, 62);
	HaarXtYt(outer_haar_x[187], outer_haar_y[187], x+40, y+45, 10, 62);
	HaarXtYt(outer_haar_x[188], outer_haar_y[188], x+50, y+55, 10, 62);
	HaarXtYt(outer_haar_x[189], outer_haar_y[189], x+30, y+30, 10, 63);
	HaarXtYt(outer_haar_x[190], outer_haar_y[190], x+40, y+40, 10, 63);
	HaarXtYt(outer_haar_x[191], outer_haar_y[191], x+50, y+50, 10, 63);
	HaarXtYt(outer_haar_x[192], outer_haar_y[192], x+55, y+50, 10, 64);
	HaarXtYt(outer_haar_x[193], outer_haar_y[193], x+45, y+40, 10, 64);
	HaarXtYt(outer_haar_x[194], outer_haar_y[194], x+35, y+30, 10, 64);
	HaarXtYt(outer_haar_x[195], outer_haar_y[195], x+60, y+45, 10, 65);
	HaarXtYt(outer_haar_x[196], outer_haar_y[196], x+35, y+25, 10, 65);
	HaarXtYt(outer_haar_x[197], outer_haar_y[197], x+50, y+35, 10, 65);
	HaarXtYt(outer_haar_x[198], outer_haar_y[198], x+50, y+30, 10, 66);
	HaarXtYt(outer_haar_x[199], outer_haar_y[199], x+35, y+20, 10, 66);
	HaarXtYt(outer_haar_x[200], outer_haar_y[200], x+65, y+35, 10, 66);
	HaarXtYt(outer_haar_x[201], outer_haar_y[201], x+40, y+20, 10, 67);
	HaarXtYt(outer_haar_x[202], outer_haar_y[202], x+50, y+25, 10, 67);
	HaarXtYt(outer_haar_x[203], outer_haar_y[203], x+65, y+30, 10, 67);
	HaarXtYt(outer_haar_x[204], outer_haar_y[204], x+40, y+15, 10, 68);
	HaarXtYt(outer_haar_x[205], outer_haar_y[205], x+55, y+20, 10, 68);
	HaarXtYt(outer_haar_x[206], outer_haar_y[206], x+70, y+25, 10, 68);
	HaarXtYt(outer_haar_x[207], outer_haar_y[207], x+70, y+20, 10, 69);
	HaarXtYt(outer_haar_x[208], outer_haar_y[208], x+55, y+15, 10, 69);
	HaarXtYt(outer_haar_x[209], outer_haar_y[209], x+40, y+10, 10, 69);
	HaarXtYt(outer_haar_x[210], outer_haar_y[210], x+70, y+15, 10, 70);
	HaarXtYt(outer_haar_x[211], outer_haar_y[211], x+50, y+10, 10, 70);
	HaarXtYt(outer_haar_x[212], outer_haar_y[212], x+60, y+10, 10, 70);
	HaarXtYt(outer_haar_x[213], outer_haar_y[213], x+40, y+5, 10, 71);
	HaarXtYt(outer_haar_x[214], outer_haar_y[214], x+55, y+5, 10, 71);
	HaarXtYt(outer_haar_x[215], outer_haar_y[215], x+70, y+5, 10, 71);
}

void Scarf::DescriptorResponsesGen6(int x, int y)
{
	ZeroOrientation();

	HaarXYO(center_haar_x[0], center_haar_y[0], x-6, y, 12, ori_weight[0]);
	HaarXYO(center_haar_x[1], center_haar_y[1], x, y+6, 12, ori_weight[0]);
	HaarXYO(center_haar_x[2], center_haar_y[2], x, y-6, 12, ori_weight[0]);
	HaarXYO(center_haar_x[3], center_haar_y[3], x+6, y, 12, ori_weight[0]);
	HaarXYO(center_haar_x[4], center_haar_y[4], x-12, y+6, 12, ori_weight[1]);
	HaarXYO(center_haar_x[5], center_haar_y[5], x-12, y-6, 12, ori_weight[1]);
	HaarXYO(center_haar_x[6], center_haar_y[6], x-6, y+12, 12, ori_weight[1]);
	HaarXYO(center_haar_x[7], center_haar_y[7], x-6, y-12, 12, ori_weight[1]);
	HaarXYO(center_haar_x[8], center_haar_y[8], x+6, y+12, 12, ori_weight[1]);
	HaarXYO(center_haar_x[9], center_haar_y[9], x+6, y-12, 12, ori_weight[1]);
	HaarXYO(center_haar_x[10], center_haar_y[10], x+12, y+6, 12, ori_weight[1]);
	HaarXYO(center_haar_x[11], center_haar_y[11], x+12, y-6, 12, ori_weight[1]);
	HaarXYO(center_haar_x[12], center_haar_y[12], x-18, y, 12, ori_weight[2]);
	HaarXYO(center_haar_x[13], center_haar_y[13], x, y+18, 12, ori_weight[2]);
	HaarXYO(center_haar_x[14], center_haar_y[14], x, y-18, 12, ori_weight[2]);
	HaarXYO(center_haar_x[15], center_haar_y[15], x+18, y, 12, ori_weight[2]);

	HaarXtYtO(inner_haar_x[0], inner_haar_y[0], x+24, y, 12, 0, ori_weight[5]);
	HaarXtYt(inner_haar_x[1], inner_haar_y[1], x+48, y, 12, 0);
	HaarXtYtO(inner_haar_x[2], inner_haar_y[2], x+30, y, 12, 1, ori_weight[9]);
	HaarXtYt(inner_haar_x[3], inner_haar_y[3], x+42, y-6, 12, 1);
	HaarXtYt(inner_haar_x[4], inner_haar_y[4], x+36, y-6, 12, 2);
	HaarXtYtO(inner_haar_x[5], inner_haar_y[5], x+30, y-6, 12, 2, ori_weight[10]);
	HaarXtYtO(inner_haar_x[6], inner_haar_y[6], x+24, y-6, 12, 3, ori_weight[6]);
	HaarXtYt(inner_haar_x[7], inner_haar_y[7], x+42, y-12, 12, 3);
	HaarXtYtO(inner_haar_x[8], inner_haar_y[8], x+18, y-6, 12, 4, ori_weight[3]);
	HaarXtYt(inner_haar_x[9], inner_haar_y[9], x+36, y-12, 12, 4);
	HaarXtYt(inner_haar_x[10], inner_haar_y[10], x+42, y-18, 12, 5);
	HaarXtYtO(inner_haar_x[11], inner_haar_y[11], x+24, y-12, 12, 5, ori_weight[8]);
	HaarXtYt(inner_haar_x[12], inner_haar_y[12], x+36, y-18, 12, 6);
	HaarXtYtO(inner_haar_x[13], inner_haar_y[13], x+30, y-18, 12, 6, ori_weight[11]);
	HaarXtYtO(inner_haar_x[14], inner_haar_y[14], x+18, y-12, 12, 7, ori_weight[4]);
	HaarXtYt(inner_haar_x[15], inner_haar_y[15], x+36, y-24, 12, 7);
	HaarXtYt(inner_haar_x[16], inner_haar_y[16], x+30, y-24, 12, 8);
	HaarXtYt(inner_haar_x[17], inner_haar_y[17], x+36, y-30, 12, 8);
	HaarXtYtO(inner_haar_x[18], inner_haar_y[18], x+18, y-18, 12, 9, ori_weight[7]);
	HaarXtYt(inner_haar_x[19], inner_haar_y[19], x+30, y-30, 12, 9);
	HaarXtYt(inner_haar_x[20], inner_haar_y[20], x+30, y-36, 12, 10);
	HaarXtYt(inner_haar_x[21], inner_haar_y[21], x+24, y-30, 12, 10);
	HaarXtYtO(inner_haar_x[22], inner_haar_y[22], x+12, y-18, 12, 11, ori_weight[4]);
	HaarXtYt(inner_haar_x[23], inner_haar_y[23], x+24, y-36, 12, 11);
	HaarXtYtO(inner_haar_x[24], inner_haar_y[24], x+18, y-30, 12, 12, ori_weight[11]);
	HaarXtYt(inner_haar_x[25], inner_haar_y[25], x+18, y-36, 12, 12);
	HaarXtYtO(inner_haar_x[26], inner_haar_y[26], x+12, y-24, 12, 13, ori_weight[8]);
	HaarXtYt(inner_haar_x[27], inner_haar_y[27], x+18, y-42, 12, 13);
	HaarXtYtO(inner_haar_x[28], inner_haar_y[28], x+6, y-18, 12, 14, ori_weight[3]);
	HaarXtYt(inner_haar_x[29], inner_haar_y[29], x+12, y-36, 12, 14);
	HaarXtYt(inner_haar_x[30], inner_haar_y[30], x+12, y-42, 12, 15);
	HaarXtYtO(inner_haar_x[31], inner_haar_y[31], x+6, y-24, 12, 15, ori_weight[6]);
	HaarXtYtO(inner_haar_x[32], inner_haar_y[32], x+6, y-30, 12, 16, ori_weight[10]);
	HaarXtYt(inner_haar_x[33], inner_haar_y[33], x+6, y-36, 12, 16);
	HaarXtYtO(inner_haar_x[34], inner_haar_y[34], x, y-30, 12, 17, ori_weight[9]);
	HaarXtYt(inner_haar_x[35], inner_haar_y[35], x+6, y-42, 12, 17);
	HaarXtYtO(inner_haar_x[36], inner_haar_y[36], x, y-24, 12, 18, ori_weight[5]);
	HaarXtYt(inner_haar_x[37], inner_haar_y[37], x, y-48, 12, 18);
	HaarXtYtO(inner_haar_x[38], inner_haar_y[38], x, y-36, 12, 19, ori_weight[12]);
	HaarXtYt(inner_haar_x[39], inner_haar_y[39], x-6, y-42, 12, 19);
	HaarXtYt(inner_haar_x[40], inner_haar_y[40], x-6, y-36, 12, 20);
	HaarXtYtO(inner_haar_x[41], inner_haar_y[41], x-6, y-30, 12, 20, ori_weight[10]);
	HaarXtYtO(inner_haar_x[42], inner_haar_y[42], x-6, y-24, 12, 21, ori_weight[6]);
	HaarXtYt(inner_haar_x[43], inner_haar_y[43], x-12, y-42, 12, 21);
	HaarXtYtO(inner_haar_x[44], inner_haar_y[44], x-6, y-18, 12, 22, ori_weight[3]);
	HaarXtYt(inner_haar_x[45], inner_haar_y[45], x-12, y-36, 12, 22);
	HaarXtYt(inner_haar_x[46], inner_haar_y[46], x-18, y-42, 12, 23);
	HaarXtYtO(inner_haar_x[47], inner_haar_y[47], x-12, y-24, 12, 23, ori_weight[8]);
	HaarXtYt(inner_haar_x[48], inner_haar_y[48], x-18, y-36, 12, 24);
	HaarXtYtO(inner_haar_x[49], inner_haar_y[49], x-18, y-30, 12, 24, ori_weight[11]);
	HaarXtYtO(inner_haar_x[50], inner_haar_y[50], x-12, y-18, 12, 25, ori_weight[4]);
	HaarXtYt(inner_haar_x[51], inner_haar_y[51], x-24, y-36, 12, 25);
	HaarXtYt(inner_haar_x[52], inner_haar_y[52], x-24, y-30, 12, 26);
	HaarXtYt(inner_haar_x[53], inner_haar_y[53], x-30, y-36, 12, 26);
	HaarXtYtO(inner_haar_x[54], inner_haar_y[54], x-18, y-18, 12, 27, ori_weight[7]);
	HaarXtYt(inner_haar_x[55], inner_haar_y[55], x-30, y-30, 12, 27);
	HaarXtYt(inner_haar_x[56], inner_haar_y[56], x-36, y-30, 12, 28);
	HaarXtYt(inner_haar_x[57], inner_haar_y[57], x-30, y-24, 12, 28);
	HaarXtYtO(inner_haar_x[58], inner_haar_y[58], x-18, y-12, 12, 29, ori_weight[4]);
	HaarXtYt(inner_haar_x[59], inner_haar_y[59], x-36, y-24, 12, 29);
	HaarXtYtO(inner_haar_x[60], inner_haar_y[60], x-30, y-18, 12, 30, ori_weight[11]);
	HaarXtYt(inner_haar_x[61], inner_haar_y[61], x-36, y-18, 12, 30);
	HaarXtYtO(inner_haar_x[62], inner_haar_y[62], x-24, y-12, 12, 31, ori_weight[8]);
	HaarXtYt(inner_haar_x[63], inner_haar_y[63], x-42, y-18, 12, 31);
	HaarXtYtO(inner_haar_x[64], inner_haar_y[64], x-18, y-6, 12, 32, ori_weight[3]);
	HaarXtYt(inner_haar_x[65], inner_haar_y[65], x-36, y-12, 12, 32);
	HaarXtYt(inner_haar_x[66], inner_haar_y[66], x-42, y-12, 12, 33);
	HaarXtYtO(inner_haar_x[67], inner_haar_y[67], x-24, y-6, 12, 33, ori_weight[6]);
	HaarXtYtO(inner_haar_x[68], inner_haar_y[68], x-30, y-6, 12, 34, ori_weight[10]);
	HaarXtYt(inner_haar_x[69], inner_haar_y[69], x-36, y-6, 12, 34);
	HaarXtYtO(inner_haar_x[70], inner_haar_y[70], x-30, y, 12, 35, ori_weight[9]);
	HaarXtYt(inner_haar_x[71], inner_haar_y[71], x-42, y-6, 12, 35);
	HaarXtYtO(inner_haar_x[72], inner_haar_y[72], x-24, y, 12, 36, ori_weight[5]);
	HaarXtYt(inner_haar_x[73], inner_haar_y[73], x-48, y, 12, 36);
	HaarXtYtO(inner_haar_x[74], inner_haar_y[74], x-36, y, 12, 37, ori_weight[12]);
	HaarXtYt(inner_haar_x[75], inner_haar_y[75], x-42, y+6, 12, 37);
	HaarXtYt(inner_haar_x[76], inner_haar_y[76], x-36, y+6, 12, 38);
	HaarXtYtO(inner_haar_x[77], inner_haar_y[77], x-30, y+6, 12, 38, ori_weight[10]);
	HaarXtYtO(inner_haar_x[78], inner_haar_y[78], x-24, y+6, 12, 39, ori_weight[6]);
	HaarXtYt(inner_haar_x[79], inner_haar_y[79], x-42, y+12, 12, 39);
	HaarXtYtO(inner_haar_x[80], inner_haar_y[80], x-18, y+6, 12, 40, ori_weight[3]);
	HaarXtYt(inner_haar_x[81], inner_haar_y[81], x-36, y+12, 12, 40);
	HaarXtYt(inner_haar_x[82], inner_haar_y[82], x-42, y+18, 12, 41);
	HaarXtYtO(inner_haar_x[83], inner_haar_y[83], x-24, y+12, 12, 41, ori_weight[8]);
	HaarXtYt(inner_haar_x[84], inner_haar_y[84], x-36, y+18, 12, 42);
	HaarXtYtO(inner_haar_x[85], inner_haar_y[85], x-30, y+18, 12, 42, ori_weight[11]);
	HaarXtYtO(inner_haar_x[86], inner_haar_y[86], x-18, y+12, 12, 43, ori_weight[4]);
	HaarXtYt(inner_haar_x[87], inner_haar_y[87], x-36, y+24, 12, 43);
	HaarXtYt(inner_haar_x[88], inner_haar_y[88], x-30, y+24, 12, 44);
	HaarXtYt(inner_haar_x[89], inner_haar_y[89], x-36, y+30, 12, 44);
	HaarXtYtO(inner_haar_x[90], inner_haar_y[90], x-18, y+18, 12, 45, ori_weight[7]);
	HaarXtYt(inner_haar_x[91], inner_haar_y[91], x-30, y+30, 12, 45);
	HaarXtYt(inner_haar_x[92], inner_haar_y[92], x-30, y+36, 12, 46);
	HaarXtYt(inner_haar_x[93], inner_haar_y[93], x-24, y+30, 12, 46);
	HaarXtYtO(inner_haar_x[94], inner_haar_y[94], x-12, y+18, 12, 47, ori_weight[4]);
	HaarXtYt(inner_haar_x[95], inner_haar_y[95], x-24, y+36, 12, 47);
	HaarXtYtO(inner_haar_x[96], inner_haar_y[96], x-18, y+30, 12, 48, ori_weight[11]);
	HaarXtYt(inner_haar_x[97], inner_haar_y[97], x-18, y+36, 12, 48);
	HaarXtYtO(inner_haar_x[98], inner_haar_y[98], x-12, y+24, 12, 49, ori_weight[8]);
	HaarXtYt(inner_haar_x[99], inner_haar_y[99], x-18, y+42, 12, 49);
	HaarXtYtO(inner_haar_x[100], inner_haar_y[100], x-6, y+18, 12, 50, ori_weight[3]);
	HaarXtYt(inner_haar_x[101], inner_haar_y[101], x-12, y+36, 12, 50);
	HaarXtYt(inner_haar_x[102], inner_haar_y[102], x-12, y+42, 12, 51);
	HaarXtYtO(inner_haar_x[103], inner_haar_y[103], x-6, y+24, 12, 51, ori_weight[6]);
	HaarXtYtO(inner_haar_x[104], inner_haar_y[104], x-6, y+30, 12, 52, ori_weight[10]);
	HaarXtYt(inner_haar_x[105], inner_haar_y[105], x-6, y+36, 12, 52);
	HaarXtYtO(inner_haar_x[106], inner_haar_y[106], x, y+30, 12, 53, ori_weight[9]);
	HaarXtYt(inner_haar_x[107], inner_haar_y[107], x-6, y+42, 12, 53);
	HaarXtYtO(inner_haar_x[108], inner_haar_y[108], x, y+24, 12, 54, ori_weight[5]);
	HaarXtYt(inner_haar_x[109], inner_haar_y[109], x, y+48, 12, 54);
	HaarXtYtO(inner_haar_x[110], inner_haar_y[110], x, y+36, 12, 55, ori_weight[12]);
	HaarXtYt(inner_haar_x[111], inner_haar_y[111], x+6, y+42, 12, 55);
	HaarXtYt(inner_haar_x[112], inner_haar_y[112], x+6, y+36, 12, 56);
	HaarXtYtO(inner_haar_x[113], inner_haar_y[113], x+6, y+30, 12, 56, ori_weight[10]);
	HaarXtYtO(inner_haar_x[114], inner_haar_y[114], x+6, y+24, 12, 57, ori_weight[6]);
	HaarXtYt(inner_haar_x[115], inner_haar_y[115], x+12, y+42, 12, 57);
	HaarXtYtO(inner_haar_x[116], inner_haar_y[116], x+6, y+18, 12, 58, ori_weight[3]);
	HaarXtYt(inner_haar_x[117], inner_haar_y[117], x+12, y+36, 12, 58);
	HaarXtYt(inner_haar_x[118], inner_haar_y[118], x+18, y+42, 12, 59);
	HaarXtYtO(inner_haar_x[119], inner_haar_y[119], x+12, y+24, 12, 59, ori_weight[8]);
	HaarXtYt(inner_haar_x[120], inner_haar_y[120], x+18, y+36, 12, 60);
	HaarXtYtO(inner_haar_x[121], inner_haar_y[121], x+18, y+30, 12, 60, ori_weight[11]);
	HaarXtYtO(inner_haar_x[122], inner_haar_y[122], x+12, y+18, 12, 61, ori_weight[4]);
	HaarXtYt(inner_haar_x[123], inner_haar_y[123], x+24, y+36, 12, 61);
	HaarXtYt(inner_haar_x[124], inner_haar_y[124], x+24, y+30, 12, 62);
	HaarXtYt(inner_haar_x[125], inner_haar_y[125], x+30, y+36, 12, 62);
	HaarXtYtO(inner_haar_x[126], inner_haar_y[126], x+18, y+18, 12, 63, ori_weight[7]);
	HaarXtYt(inner_haar_x[127], inner_haar_y[127], x+30, y+30, 12, 63);
	HaarXtYt(inner_haar_x[128], inner_haar_y[128], x+36, y+30, 12, 64);
	HaarXtYt(inner_haar_x[129], inner_haar_y[129], x+30, y+24, 12, 64);
	HaarXtYtO(inner_haar_x[130], inner_haar_y[130], x+18, y+12, 12, 65, ori_weight[4]);
	HaarXtYt(inner_haar_x[131], inner_haar_y[131], x+36, y+24, 12, 65);
	HaarXtYtO(inner_haar_x[132], inner_haar_y[132], x+30, y+18, 12, 66, ori_weight[11]);
	HaarXtYt(inner_haar_x[133], inner_haar_y[133], x+36, y+18, 12, 66);
	HaarXtYtO(inner_haar_x[134], inner_haar_y[134], x+24, y+12, 12, 67, ori_weight[8]);
	HaarXtYt(inner_haar_x[135], inner_haar_y[135], x+42, y+18, 12, 67);
	HaarXtYtO(inner_haar_x[136], inner_haar_y[136], x+18, y+6, 12, 68, ori_weight[3]);
	HaarXtYt(inner_haar_x[137], inner_haar_y[137], x+36, y+12, 12, 68);
	HaarXtYt(inner_haar_x[138], inner_haar_y[138], x+42, y+12, 12, 69);
	HaarXtYtO(inner_haar_x[139], inner_haar_y[139], x+24, y+6, 12, 69, ori_weight[6]);
	HaarXtYtO(inner_haar_x[140], inner_haar_y[140], x+30, y+6, 12, 70, ori_weight[10]);
	HaarXtYt(inner_haar_x[141], inner_haar_y[141], x+36, y+6, 12, 70);
	HaarXtYtO(inner_haar_x[142], inner_haar_y[142], x+36, y, 12, 71, ori_weight[12]);
	HaarXtYt(inner_haar_x[143], inner_haar_y[143], x+42, y+6, 12, 71);

	HaarXtYt(outer_haar_x[0], outer_haar_y[0], x+54, y, 12, 0);
	HaarXtYt(outer_haar_x[1], outer_haar_y[1], x+72, y, 12, 0);
	HaarXtYt(outer_haar_x[2], outer_haar_y[2], x+90, y, 12, 0);
	HaarXtYt(outer_haar_x[3], outer_haar_y[3], x+84, y-6, 12, 1);
	HaarXtYt(outer_haar_x[4], outer_haar_y[4], x+66, y-6, 12, 1);
	HaarXtYt(outer_haar_x[5], outer_haar_y[5], x+48, y-6, 12, 1);
	HaarXtYt(outer_haar_x[6], outer_haar_y[6], x+72, y-12, 12, 2);
	HaarXtYt(outer_haar_x[7], outer_haar_y[7], x+60, y-12, 12, 2);
	HaarXtYt(outer_haar_x[8], outer_haar_y[8], x+84, y-18, 12, 2);
	HaarXtYt(outer_haar_x[9], outer_haar_y[9], x+48, y-12, 12, 3);
	HaarXtYt(outer_haar_x[10], outer_haar_y[10], x+66, y-18, 12, 3);
	HaarXtYt(outer_haar_x[11], outer_haar_y[11], x+84, y-24, 12, 3);
	HaarXtYt(outer_haar_x[12], outer_haar_y[12], x+84, y-30, 12, 4);
	HaarXtYt(outer_haar_x[13], outer_haar_y[13], x+66, y-24, 12, 4);
	HaarXtYt(outer_haar_x[14], outer_haar_y[14], x+48, y-18, 12, 4);
	HaarXtYt(outer_haar_x[15], outer_haar_y[15], x+78, y-36, 12, 5);
	HaarXtYt(outer_haar_x[16], outer_haar_y[16], x+48, y-24, 12, 5);
	HaarXtYt(outer_haar_x[17], outer_haar_y[17], x+60, y-30, 12, 5);
	HaarXtYt(outer_haar_x[18], outer_haar_y[18], x+78, y-42, 12, 6);
	HaarXtYt(outer_haar_x[19], outer_haar_y[19], x+42, y-24, 12, 6);
	HaarXtYt(outer_haar_x[20], outer_haar_y[20], x+60, y-36, 12, 6);
	HaarXtYt(outer_haar_x[21], outer_haar_y[21], x+60, y-42, 12, 7);
	HaarXtYt(outer_haar_x[22], outer_haar_y[22], x+42, y-30, 12, 7);
	HaarXtYt(outer_haar_x[23], outer_haar_y[23], x+72, y-54, 12, 7);
	HaarXtYt(outer_haar_x[24], outer_haar_y[24], x+42, y-36, 12, 8);
	HaarXtYt(outer_haar_x[25], outer_haar_y[25], x+54, y-48, 12, 8);
	HaarXtYt(outer_haar_x[26], outer_haar_y[26], x+66, y-60, 12, 8);
	HaarXtYt(outer_haar_x[27], outer_haar_y[27], x+36, y-36, 12, 9);
	HaarXtYt(outer_haar_x[28], outer_haar_y[28], x+48, y-48, 12, 9);
	HaarXtYt(outer_haar_x[29], outer_haar_y[29], x+60, y-60, 12, 9);
	HaarXtYt(outer_haar_x[30], outer_haar_y[30], x+60, y-66, 12, 10);
	HaarXtYt(outer_haar_x[31], outer_haar_y[31], x+48, y-54, 12, 10);
	HaarXtYt(outer_haar_x[32], outer_haar_y[32], x+36, y-42, 12, 10);
	HaarXtYt(outer_haar_x[33], outer_haar_y[33], x+54, y-72, 12, 11);
	HaarXtYt(outer_haar_x[34], outer_haar_y[34], x+30, y-42, 12, 11);
	HaarXtYt(outer_haar_x[35], outer_haar_y[35], x+42, y-60, 12, 11);
	HaarXtYt(outer_haar_x[36], outer_haar_y[36], x+36, y-60, 12, 12);
	HaarXtYt(outer_haar_x[37], outer_haar_y[37], x+24, y-42, 12, 12);
	HaarXtYt(outer_haar_x[38], outer_haar_y[38], x+42, y-78, 12, 12);
	HaarXtYt(outer_haar_x[39], outer_haar_y[39], x+24, y-48, 12, 13);
	HaarXtYt(outer_haar_x[40], outer_haar_y[40], x+30, y-60, 12, 13);
	HaarXtYt(outer_haar_x[41], outer_haar_y[41], x+36, y-78, 12, 13);
	HaarXtYt(outer_haar_x[42], outer_haar_y[42], x+18, y-48, 12, 14);
	HaarXtYt(outer_haar_x[43], outer_haar_y[43], x+24, y-66, 12, 14);
	HaarXtYt(outer_haar_x[44], outer_haar_y[44], x+30, y-84, 12, 14);
	HaarXtYt(outer_haar_x[45], outer_haar_y[45], x+24, y-84, 12, 15);
	HaarXtYt(outer_haar_x[46], outer_haar_y[46], x+18, y-66, 12, 15);
	HaarXtYt(outer_haar_x[47], outer_haar_y[47], x+12, y-48, 12, 15);
	HaarXtYt(outer_haar_x[48], outer_haar_y[48], x+18, y-84, 12, 16);
	HaarXtYt(outer_haar_x[49], outer_haar_y[49], x+12, y-60, 12, 16);
	HaarXtYt(outer_haar_x[50], outer_haar_y[50], x+12, y-72, 12, 16);
	HaarXtYt(outer_haar_x[51], outer_haar_y[51], x+6, y-48, 12, 17);
	HaarXtYt(outer_haar_x[52], outer_haar_y[52], x+6, y-66, 12, 17);
	HaarXtYt(outer_haar_x[53], outer_haar_y[53], x+6, y-84, 12, 17);
	HaarXtYt(outer_haar_x[54], outer_haar_y[54], x, y-54, 12, 18);
	HaarXtYt(outer_haar_x[55], outer_haar_y[55], x, y-72, 12, 18);
	HaarXtYt(outer_haar_x[56], outer_haar_y[56], x, y-90, 12, 18);
	HaarXtYt(outer_haar_x[57], outer_haar_y[57], x-6, y-84, 12, 19);
	HaarXtYt(outer_haar_x[58], outer_haar_y[58], x-6, y-66, 12, 19);
	HaarXtYt(outer_haar_x[59], outer_haar_y[59], x-6, y-48, 12, 19);
	HaarXtYt(outer_haar_x[60], outer_haar_y[60], x-12, y-72, 12, 20);
	HaarXtYt(outer_haar_x[61], outer_haar_y[61], x-12, y-60, 12, 20);
	HaarXtYt(outer_haar_x[62], outer_haar_y[62], x-18, y-84, 12, 20);
	HaarXtYt(outer_haar_x[63], outer_haar_y[63], x-12, y-48, 12, 21);
	HaarXtYt(outer_haar_x[64], outer_haar_y[64], x-18, y-66, 12, 21);
	HaarXtYt(outer_haar_x[65], outer_haar_y[65], x-24, y-84, 12, 21);
	HaarXtYt(outer_haar_x[66], outer_haar_y[66], x-30, y-84, 12, 22);
	HaarXtYt(outer_haar_x[67], outer_haar_y[67], x-24, y-66, 12, 22);
	HaarXtYt(outer_haar_x[68], outer_haar_y[68], x-18, y-48, 12, 22);
	HaarXtYt(outer_haar_x[69], outer_haar_y[69], x-36, y-78, 12, 23);
	HaarXtYt(outer_haar_x[70], outer_haar_y[70], x-24, y-48, 12, 23);
	HaarXtYt(outer_haar_x[71], outer_haar_y[71], x-30, y-60, 12, 23);
	HaarXtYt(outer_haar_x[72], outer_haar_y[72], x-42, y-78, 12, 24);
	HaarXtYt(outer_haar_x[73], outer_haar_y[73], x-24, y-42, 12, 24);
	HaarXtYt(outer_haar_x[74], outer_haar_y[74], x-36, y-60, 12, 24);
	HaarXtYt(outer_haar_x[75], outer_haar_y[75], x-42, y-60, 12, 25);
	HaarXtYt(outer_haar_x[76], outer_haar_y[76], x-30, y-42, 12, 25);
	HaarXtYt(outer_haar_x[77], outer_haar_y[77], x-54, y-72, 12, 25);
	HaarXtYt(outer_haar_x[78], outer_haar_y[78], x-36, y-42, 12, 26);
	HaarXtYt(outer_haar_x[79], outer_haar_y[79], x-48, y-54, 12, 26);
	HaarXtYt(outer_haar_x[80], outer_haar_y[80], x-60, y-66, 12, 26);
	HaarXtYt(outer_haar_x[81], outer_haar_y[81], x-36, y-36, 12, 27);
	HaarXtYt(outer_haar_x[82], outer_haar_y[82], x-48, y-48, 12, 27);
	HaarXtYt(outer_haar_x[83], outer_haar_y[83], x-60, y-60, 12, 27);
	HaarXtYt(outer_haar_x[84], outer_haar_y[84], x-66, y-60, 12, 28);
	HaarXtYt(outer_haar_x[85], outer_haar_y[85], x-54, y-48, 12, 28);
	HaarXtYt(outer_haar_x[86], outer_haar_y[86], x-42, y-36, 12, 28);
	HaarXtYt(outer_haar_x[87], outer_haar_y[87], x-72, y-54, 12, 29);
	HaarXtYt(outer_haar_x[88], outer_haar_y[88], x-42, y-30, 12, 29);
	HaarXtYt(outer_haar_x[89], outer_haar_y[89], x-60, y-42, 12, 29);
	HaarXtYt(outer_haar_x[90], outer_haar_y[90], x-60, y-36, 12, 30);
	HaarXtYt(outer_haar_x[91], outer_haar_y[91], x-42, y-24, 12, 30);
	HaarXtYt(outer_haar_x[92], outer_haar_y[92], x-78, y-42, 12, 30);
	HaarXtYt(outer_haar_x[93], outer_haar_y[93], x-48, y-24, 12, 31);
	HaarXtYt(outer_haar_x[94], outer_haar_y[94], x-60, y-30, 12, 31);
	HaarXtYt(outer_haar_x[95], outer_haar_y[95], x-78, y-36, 12, 31);
	HaarXtYt(outer_haar_x[96], outer_haar_y[96], x-48, y-18, 12, 32);
	HaarXtYt(outer_haar_x[97], outer_haar_y[97], x-66, y-24, 12, 32);
	HaarXtYt(outer_haar_x[98], outer_haar_y[98], x-84, y-30, 12, 32);
	HaarXtYt(outer_haar_x[99], outer_haar_y[99], x-84, y-24, 12, 33);
	HaarXtYt(outer_haar_x[100], outer_haar_y[100], x-66, y-18, 12, 33);
	HaarXtYt(outer_haar_x[101], outer_haar_y[101], x-48, y-12, 12, 33);
	HaarXtYt(outer_haar_x[102], outer_haar_y[102], x-84, y-18, 12, 34);
	HaarXtYt(outer_haar_x[103], outer_haar_y[103], x-60, y-12, 12, 34);
	HaarXtYt(outer_haar_x[104], outer_haar_y[104], x-72, y-12, 12, 34);
	HaarXtYt(outer_haar_x[105], outer_haar_y[105], x-48, y-6, 12, 35);
	HaarXtYt(outer_haar_x[106], outer_haar_y[106], x-66, y-6, 12, 35);
	HaarXtYt(outer_haar_x[107], outer_haar_y[107], x-84, y-6, 12, 35);
	HaarXtYt(outer_haar_x[108], outer_haar_y[108], x-54, y, 12, 36);
	HaarXtYt(outer_haar_x[109], outer_haar_y[109], x-72, y, 12, 36);
	HaarXtYt(outer_haar_x[110], outer_haar_y[110], x-90, y, 12, 36);
	HaarXtYt(outer_haar_x[111], outer_haar_y[111], x-84, y+6, 12, 37);
	HaarXtYt(outer_haar_x[112], outer_haar_y[112], x-66, y+6, 12, 37);
	HaarXtYt(outer_haar_x[113], outer_haar_y[113], x-48, y+6, 12, 37);
	HaarXtYt(outer_haar_x[114], outer_haar_y[114], x-72, y+12, 12, 38);
	HaarXtYt(outer_haar_x[115], outer_haar_y[115], x-60, y+12, 12, 38);
	HaarXtYt(outer_haar_x[116], outer_haar_y[116], x-84, y+18, 12, 38);
	HaarXtYt(outer_haar_x[117], outer_haar_y[117], x-48, y+12, 12, 39);
	HaarXtYt(outer_haar_x[118], outer_haar_y[118], x-66, y+18, 12, 39);
	HaarXtYt(outer_haar_x[119], outer_haar_y[119], x-84, y+24, 12, 39);
	HaarXtYt(outer_haar_x[120], outer_haar_y[120], x-84, y+30, 12, 40);
	HaarXtYt(outer_haar_x[121], outer_haar_y[121], x-66, y+24, 12, 40);
	HaarXtYt(outer_haar_x[122], outer_haar_y[122], x-48, y+18, 12, 40);
	HaarXtYt(outer_haar_x[123], outer_haar_y[123], x-78, y+36, 12, 41);
	HaarXtYt(outer_haar_x[124], outer_haar_y[124], x-48, y+24, 12, 41);
	HaarXtYt(outer_haar_x[125], outer_haar_y[125], x-60, y+30, 12, 41);
	HaarXtYt(outer_haar_x[126], outer_haar_y[126], x-78, y+42, 12, 42);
	HaarXtYt(outer_haar_x[127], outer_haar_y[127], x-42, y+24, 12, 42);
	HaarXtYt(outer_haar_x[128], outer_haar_y[128], x-60, y+36, 12, 42);
	HaarXtYt(outer_haar_x[129], outer_haar_y[129], x-60, y+42, 12, 43);
	HaarXtYt(outer_haar_x[130], outer_haar_y[130], x-42, y+30, 12, 43);
	HaarXtYt(outer_haar_x[131], outer_haar_y[131], x-72, y+54, 12, 43);
	HaarXtYt(outer_haar_x[132], outer_haar_y[132], x-42, y+36, 12, 44);
	HaarXtYt(outer_haar_x[133], outer_haar_y[133], x-54, y+48, 12, 44);
	HaarXtYt(outer_haar_x[134], outer_haar_y[134], x-66, y+60, 12, 44);
	HaarXtYt(outer_haar_x[135], outer_haar_y[135], x-36, y+36, 12, 45);
	HaarXtYt(outer_haar_x[136], outer_haar_y[136], x-48, y+48, 12, 45);
	HaarXtYt(outer_haar_x[137], outer_haar_y[137], x-60, y+60, 12, 45);
	HaarXtYt(outer_haar_x[138], outer_haar_y[138], x-60, y+66, 12, 46);
	HaarXtYt(outer_haar_x[139], outer_haar_y[139], x-48, y+54, 12, 46);
	HaarXtYt(outer_haar_x[140], outer_haar_y[140], x-36, y+42, 12, 46);
	HaarXtYt(outer_haar_x[141], outer_haar_y[141], x-54, y+72, 12, 47);
	HaarXtYt(outer_haar_x[142], outer_haar_y[142], x-30, y+42, 12, 47);
	HaarXtYt(outer_haar_x[143], outer_haar_y[143], x-42, y+60, 12, 47);
	HaarXtYt(outer_haar_x[144], outer_haar_y[144], x-36, y+60, 12, 48);
	HaarXtYt(outer_haar_x[145], outer_haar_y[145], x-24, y+42, 12, 48);
	HaarXtYt(outer_haar_x[146], outer_haar_y[146], x-42, y+78, 12, 48);
	HaarXtYt(outer_haar_x[147], outer_haar_y[147], x-24, y+48, 12, 49);
	HaarXtYt(outer_haar_x[148], outer_haar_y[148], x-30, y+60, 12, 49);
	HaarXtYt(outer_haar_x[149], outer_haar_y[149], x-36, y+78, 12, 49);
	HaarXtYt(outer_haar_x[150], outer_haar_y[150], x-18, y+48, 12, 50);
	HaarXtYt(outer_haar_x[151], outer_haar_y[151], x-24, y+66, 12, 50);
	HaarXtYt(outer_haar_x[152], outer_haar_y[152], x-30, y+84, 12, 50);
	HaarXtYt(outer_haar_x[153], outer_haar_y[153], x-24, y+84, 12, 51);
	HaarXtYt(outer_haar_x[154], outer_haar_y[154], x-18, y+66, 12, 51);
	HaarXtYt(outer_haar_x[155], outer_haar_y[155], x-12, y+48, 12, 51);
	HaarXtYt(outer_haar_x[156], outer_haar_y[156], x-18, y+84, 12, 52);
	HaarXtYt(outer_haar_x[157], outer_haar_y[157], x-12, y+60, 12, 52);
	HaarXtYt(outer_haar_x[158], outer_haar_y[158], x-12, y+72, 12, 52);
	HaarXtYt(outer_haar_x[159], outer_haar_y[159], x-6, y+48, 12, 53);
	HaarXtYt(outer_haar_x[160], outer_haar_y[160], x-6, y+66, 12, 53);
	HaarXtYt(outer_haar_x[161], outer_haar_y[161], x-6, y+84, 12, 53);
	HaarXtYt(outer_haar_x[162], outer_haar_y[162], x, y+54, 12, 54);
	HaarXtYt(outer_haar_x[163], outer_haar_y[163], x, y+72, 12, 54);
	HaarXtYt(outer_haar_x[164], outer_haar_y[164], x, y+90, 12, 54);
	HaarXtYt(outer_haar_x[165], outer_haar_y[165], x+6, y+84, 12, 55);
	HaarXtYt(outer_haar_x[166], outer_haar_y[166], x+6, y+66, 12, 55);
	HaarXtYt(outer_haar_x[167], outer_haar_y[167], x+6, y+48, 12, 55);
	HaarXtYt(outer_haar_x[168], outer_haar_y[168], x+12, y+72, 12, 56);
	HaarXtYt(outer_haar_x[169], outer_haar_y[169], x+12, y+60, 12, 56);
	HaarXtYt(outer_haar_x[170], outer_haar_y[170], x+18, y+84, 12, 56);
	HaarXtYt(outer_haar_x[171], outer_haar_y[171], x+12, y+48, 12, 57);
	HaarXtYt(outer_haar_x[172], outer_haar_y[172], x+18, y+66, 12, 57);
	HaarXtYt(outer_haar_x[173], outer_haar_y[173], x+24, y+84, 12, 57);
	HaarXtYt(outer_haar_x[174], outer_haar_y[174], x+30, y+84, 12, 58);
	HaarXtYt(outer_haar_x[175], outer_haar_y[175], x+24, y+66, 12, 58);
	HaarXtYt(outer_haar_x[176], outer_haar_y[176], x+18, y+48, 12, 58);
	HaarXtYt(outer_haar_x[177], outer_haar_y[177], x+36, y+78, 12, 59);
	HaarXtYt(outer_haar_x[178], outer_haar_y[178], x+24, y+48, 12, 59);
	HaarXtYt(outer_haar_x[179], outer_haar_y[179], x+30, y+60, 12, 59);
	HaarXtYt(outer_haar_x[180], outer_haar_y[180], x+42, y+78, 12, 60);
	HaarXtYt(outer_haar_x[181], outer_haar_y[181], x+24, y+42, 12, 60);
	HaarXtYt(outer_haar_x[182], outer_haar_y[182], x+36, y+60, 12, 60);
	HaarXtYt(outer_haar_x[183], outer_haar_y[183], x+42, y+60, 12, 61);
	HaarXtYt(outer_haar_x[184], outer_haar_y[184], x+30, y+42, 12, 61);
	HaarXtYt(outer_haar_x[185], outer_haar_y[185], x+54, y+72, 12, 61);
	HaarXtYt(outer_haar_x[186], outer_haar_y[186], x+36, y+42, 12, 62);
	HaarXtYt(outer_haar_x[187], outer_haar_y[187], x+48, y+54, 12, 62);
	HaarXtYt(outer_haar_x[188], outer_haar_y[188], x+60, y+66, 12, 62);
	HaarXtYt(outer_haar_x[189], outer_haar_y[189], x+36, y+36, 12, 63);
	HaarXtYt(outer_haar_x[190], outer_haar_y[190], x+48, y+48, 12, 63);
	HaarXtYt(outer_haar_x[191], outer_haar_y[191], x+60, y+60, 12, 63);
	HaarXtYt(outer_haar_x[192], outer_haar_y[192], x+66, y+60, 12, 64);
	HaarXtYt(outer_haar_x[193], outer_haar_y[193], x+54, y+48, 12, 64);
	HaarXtYt(outer_haar_x[194], outer_haar_y[194], x+42, y+36, 12, 64);
	HaarXtYt(outer_haar_x[195], outer_haar_y[195], x+72, y+54, 12, 65);
	HaarXtYt(outer_haar_x[196], outer_haar_y[196], x+42, y+30, 12, 65);
	HaarXtYt(outer_haar_x[197], outer_haar_y[197], x+60, y+42, 12, 65);
	HaarXtYt(outer_haar_x[198], outer_haar_y[198], x+60, y+36, 12, 66);
	HaarXtYt(outer_haar_x[199], outer_haar_y[199], x+42, y+24, 12, 66);
	HaarXtYt(outer_haar_x[200], outer_haar_y[200], x+78, y+42, 12, 66);
	HaarXtYt(outer_haar_x[201], outer_haar_y[201], x+48, y+24, 12, 67);
	HaarXtYt(outer_haar_x[202], outer_haar_y[202], x+60, y+30, 12, 67);
	HaarXtYt(outer_haar_x[203], outer_haar_y[203], x+78, y+36, 12, 67);
	HaarXtYt(outer_haar_x[204], outer_haar_y[204], x+48, y+18, 12, 68);
	HaarXtYt(outer_haar_x[205], outer_haar_y[205], x+66, y+24, 12, 68);
	HaarXtYt(outer_haar_x[206], outer_haar_y[206], x+84, y+30, 12, 68);
	HaarXtYt(outer_haar_x[207], outer_haar_y[207], x+84, y+24, 12, 69);
	HaarXtYt(outer_haar_x[208], outer_haar_y[208], x+66, y+18, 12, 69);
	HaarXtYt(outer_haar_x[209], outer_haar_y[209], x+48, y+12, 12, 69);
	HaarXtYt(outer_haar_x[210], outer_haar_y[210], x+84, y+18, 12, 70);
	HaarXtYt(outer_haar_x[211], outer_haar_y[211], x+60, y+12, 12, 70);
	HaarXtYt(outer_haar_x[212], outer_haar_y[212], x+72, y+12, 12, 70);
	HaarXtYt(outer_haar_x[213], outer_haar_y[213], x+48, y+6, 12, 71);
	HaarXtYt(outer_haar_x[214], outer_haar_y[214], x+66, y+6, 12, 71);
	HaarXtYt(outer_haar_x[215], outer_haar_y[215], x+84, y+6, 12, 71);
}

void Scarf::DescriptorResponsesGen7(int x, int y)
{
	ZeroOrientation();

	HaarXYO(center_haar_x[0], center_haar_y[0], x-7, y, 14, ori_weight[0]);
	HaarXYO(center_haar_x[1], center_haar_y[1], x, y+7, 14, ori_weight[0]);
	HaarXYO(center_haar_x[2], center_haar_y[2], x, y-7, 14, ori_weight[0]);
	HaarXYO(center_haar_x[3], center_haar_y[3], x+7, y, 14, ori_weight[0]);
	HaarXYO(center_haar_x[4], center_haar_y[4], x-14, y+7, 14, ori_weight[1]);
	HaarXYO(center_haar_x[5], center_haar_y[5], x-14, y-7, 14, ori_weight[1]);
	HaarXYO(center_haar_x[6], center_haar_y[6], x-7, y+14, 14, ori_weight[1]);
	HaarXYO(center_haar_x[7], center_haar_y[7], x-7, y-14, 14, ori_weight[1]);
	HaarXYO(center_haar_x[8], center_haar_y[8], x+7, y+14, 14, ori_weight[1]);
	HaarXYO(center_haar_x[9], center_haar_y[9], x+7, y-14, 14, ori_weight[1]);
	HaarXYO(center_haar_x[10], center_haar_y[10], x+14, y+7, 14, ori_weight[1]);
	HaarXYO(center_haar_x[11], center_haar_y[11], x+14, y-7, 14, ori_weight[1]);
	HaarXYO(center_haar_x[12], center_haar_y[12], x-21, y, 14, ori_weight[2]);
	HaarXYO(center_haar_x[13], center_haar_y[13], x, y+21, 14, ori_weight[2]);
	HaarXYO(center_haar_x[14], center_haar_y[14], x, y-21, 14, ori_weight[2]);
	HaarXYO(center_haar_x[15], center_haar_y[15], x+21, y, 14, ori_weight[2]);

	HaarXtYtO(inner_haar_x[0], inner_haar_y[0], x+28, y, 14, 0, ori_weight[5]);
	HaarXtYt(inner_haar_x[1], inner_haar_y[1], x+56, y, 14, 0);
	HaarXtYtO(inner_haar_x[2], inner_haar_y[2], x+35, y, 14, 1, ori_weight[9]);
	HaarXtYt(inner_haar_x[3], inner_haar_y[3], x+49, y-7, 14, 1);
	HaarXtYt(inner_haar_x[4], inner_haar_y[4], x+42, y-7, 14, 2);
	HaarXtYtO(inner_haar_x[5], inner_haar_y[5], x+35, y-7, 14, 2, ori_weight[10]);
	HaarXtYtO(inner_haar_x[6], inner_haar_y[6], x+28, y-7, 14, 3, ori_weight[6]);
	HaarXtYt(inner_haar_x[7], inner_haar_y[7], x+49, y-14, 14, 3);
	HaarXtYtO(inner_haar_x[8], inner_haar_y[8], x+21, y-7, 14, 4, ori_weight[3]);
	HaarXtYt(inner_haar_x[9], inner_haar_y[9], x+42, y-14, 14, 4);
	HaarXtYt(inner_haar_x[10], inner_haar_y[10], x+49, y-21, 14, 5);
	HaarXtYtO(inner_haar_x[11], inner_haar_y[11], x+28, y-14, 14, 5, ori_weight[8]);
	HaarXtYt(inner_haar_x[12], inner_haar_y[12], x+42, y-21, 14, 6);
	HaarXtYtO(inner_haar_x[13], inner_haar_y[13], x+35, y-21, 14, 6, ori_weight[11]);
	HaarXtYtO(inner_haar_x[14], inner_haar_y[14], x+21, y-14, 14, 7, ori_weight[4]);
	HaarXtYt(inner_haar_x[15], inner_haar_y[15], x+42, y-28, 14, 7);
	HaarXtYt(inner_haar_x[16], inner_haar_y[16], x+35, y-28, 14, 8);
	HaarXtYt(inner_haar_x[17], inner_haar_y[17], x+42, y-35, 14, 8);
	HaarXtYtO(inner_haar_x[18], inner_haar_y[18], x+21, y-21, 14, 9, ori_weight[7]);
	HaarXtYt(inner_haar_x[19], inner_haar_y[19], x+35, y-35, 14, 9);
	HaarXtYt(inner_haar_x[20], inner_haar_y[20], x+35, y-42, 14, 10);
	HaarXtYt(inner_haar_x[21], inner_haar_y[21], x+28, y-35, 14, 10);
	HaarXtYtO(inner_haar_x[22], inner_haar_y[22], x+14, y-21, 14, 11, ori_weight[4]);
	HaarXtYt(inner_haar_x[23], inner_haar_y[23], x+28, y-42, 14, 11);
	HaarXtYtO(inner_haar_x[24], inner_haar_y[24], x+21, y-35, 14, 12, ori_weight[11]);
	HaarXtYt(inner_haar_x[25], inner_haar_y[25], x+21, y-42, 14, 12);
	HaarXtYtO(inner_haar_x[26], inner_haar_y[26], x+14, y-28, 14, 13, ori_weight[8]);
	HaarXtYt(inner_haar_x[27], inner_haar_y[27], x+21, y-49, 14, 13);
	HaarXtYtO(inner_haar_x[28], inner_haar_y[28], x+7, y-21, 14, 14, ori_weight[3]);
	HaarXtYt(inner_haar_x[29], inner_haar_y[29], x+14, y-42, 14, 14);
	HaarXtYt(inner_haar_x[30], inner_haar_y[30], x+14, y-49, 14, 15);
	HaarXtYtO(inner_haar_x[31], inner_haar_y[31], x+7, y-28, 14, 15, ori_weight[6]);
	HaarXtYtO(inner_haar_x[32], inner_haar_y[32], x+7, y-35, 14, 16, ori_weight[10]);
	HaarXtYt(inner_haar_x[33], inner_haar_y[33], x+7, y-42, 14, 16);
	HaarXtYtO(inner_haar_x[34], inner_haar_y[34], x, y-35, 14, 17, ori_weight[9]);
	HaarXtYt(inner_haar_x[35], inner_haar_y[35], x+7, y-49, 14, 17);
	HaarXtYtO(inner_haar_x[36], inner_haar_y[36], x, y-28, 14, 18, ori_weight[5]);
	HaarXtYt(inner_haar_x[37], inner_haar_y[37], x, y-56, 14, 18);
	HaarXtYtO(inner_haar_x[38], inner_haar_y[38], x, y-42, 14, 19, ori_weight[12]);
	HaarXtYt(inner_haar_x[39], inner_haar_y[39], x-7, y-49, 14, 19);
	HaarXtYt(inner_haar_x[40], inner_haar_y[40], x-7, y-42, 14, 20);
	HaarXtYtO(inner_haar_x[41], inner_haar_y[41], x-7, y-35, 14, 20, ori_weight[10]);
	HaarXtYtO(inner_haar_x[42], inner_haar_y[42], x-7, y-28, 14, 21, ori_weight[6]);
	HaarXtYt(inner_haar_x[43], inner_haar_y[43], x-14, y-49, 14, 21);
	HaarXtYtO(inner_haar_x[44], inner_haar_y[44], x-7, y-21, 14, 22, ori_weight[3]);
	HaarXtYt(inner_haar_x[45], inner_haar_y[45], x-14, y-42, 14, 22);
	HaarXtYt(inner_haar_x[46], inner_haar_y[46], x-21, y-49, 14, 23);
	HaarXtYtO(inner_haar_x[47], inner_haar_y[47], x-14, y-28, 14, 23, ori_weight[8]);
	HaarXtYt(inner_haar_x[48], inner_haar_y[48], x-21, y-42, 14, 24);
	HaarXtYtO(inner_haar_x[49], inner_haar_y[49], x-21, y-35, 14, 24, ori_weight[11]);
	HaarXtYtO(inner_haar_x[50], inner_haar_y[50], x-14, y-21, 14, 25, ori_weight[4]);
	HaarXtYt(inner_haar_x[51], inner_haar_y[51], x-28, y-42, 14, 25);
	HaarXtYt(inner_haar_x[52], inner_haar_y[52], x-28, y-35, 14, 26);
	HaarXtYt(inner_haar_x[53], inner_haar_y[53], x-35, y-42, 14, 26);
	HaarXtYtO(inner_haar_x[54], inner_haar_y[54], x-21, y-21, 14, 27, ori_weight[7]);
	HaarXtYt(inner_haar_x[55], inner_haar_y[55], x-35, y-35, 14, 27);
	HaarXtYt(inner_haar_x[56], inner_haar_y[56], x-42, y-35, 14, 28);
	HaarXtYt(inner_haar_x[57], inner_haar_y[57], x-35, y-28, 14, 28);
	HaarXtYtO(inner_haar_x[58], inner_haar_y[58], x-21, y-14, 14, 29, ori_weight[4]);
	HaarXtYt(inner_haar_x[59], inner_haar_y[59], x-42, y-28, 14, 29);
	HaarXtYtO(inner_haar_x[60], inner_haar_y[60], x-35, y-21, 14, 30, ori_weight[11]);
	HaarXtYt(inner_haar_x[61], inner_haar_y[61], x-42, y-21, 14, 30);
	HaarXtYtO(inner_haar_x[62], inner_haar_y[62], x-28, y-14, 14, 31, ori_weight[8]);
	HaarXtYt(inner_haar_x[63], inner_haar_y[63], x-49, y-21, 14, 31);
	HaarXtYtO(inner_haar_x[64], inner_haar_y[64], x-21, y-7, 14, 32, ori_weight[3]);
	HaarXtYt(inner_haar_x[65], inner_haar_y[65], x-42, y-14, 14, 32);
	HaarXtYt(inner_haar_x[66], inner_haar_y[66], x-49, y-14, 14, 33);
	HaarXtYtO(inner_haar_x[67], inner_haar_y[67], x-28, y-7, 14, 33, ori_weight[6]);
	HaarXtYtO(inner_haar_x[68], inner_haar_y[68], x-35, y-7, 14, 34, ori_weight[10]);
	HaarXtYt(inner_haar_x[69], inner_haar_y[69], x-42, y-7, 14, 34);
	HaarXtYtO(inner_haar_x[70], inner_haar_y[70], x-35, y, 14, 35, ori_weight[9]);
	HaarXtYt(inner_haar_x[71], inner_haar_y[71], x-49, y-7, 14, 35);
	HaarXtYtO(inner_haar_x[72], inner_haar_y[72], x-28, y, 14, 36, ori_weight[5]);
	HaarXtYt(inner_haar_x[73], inner_haar_y[73], x-56, y, 14, 36);
	HaarXtYtO(inner_haar_x[74], inner_haar_y[74], x-42, y, 14, 37, ori_weight[12]);
	HaarXtYt(inner_haar_x[75], inner_haar_y[75], x-49, y+7, 14, 37);
	HaarXtYt(inner_haar_x[76], inner_haar_y[76], x-42, y+7, 14, 38);
	HaarXtYtO(inner_haar_x[77], inner_haar_y[77], x-35, y+7, 14, 38, ori_weight[10]);
	HaarXtYtO(inner_haar_x[78], inner_haar_y[78], x-28, y+7, 14, 39, ori_weight[6]);
	HaarXtYt(inner_haar_x[79], inner_haar_y[79], x-49, y+14, 14, 39);
	HaarXtYtO(inner_haar_x[80], inner_haar_y[80], x-21, y+7, 14, 40, ori_weight[3]);
	HaarXtYt(inner_haar_x[81], inner_haar_y[81], x-42, y+14, 14, 40);
	HaarXtYt(inner_haar_x[82], inner_haar_y[82], x-49, y+21, 14, 41);
	HaarXtYtO(inner_haar_x[83], inner_haar_y[83], x-28, y+14, 14, 41, ori_weight[8]);
	HaarXtYt(inner_haar_x[84], inner_haar_y[84], x-42, y+21, 14, 42);
	HaarXtYtO(inner_haar_x[85], inner_haar_y[85], x-35, y+21, 14, 42, ori_weight[11]);
	HaarXtYtO(inner_haar_x[86], inner_haar_y[86], x-21, y+14, 14, 43, ori_weight[4]);
	HaarXtYt(inner_haar_x[87], inner_haar_y[87], x-42, y+28, 14, 43);
	HaarXtYt(inner_haar_x[88], inner_haar_y[88], x-35, y+28, 14, 44);
	HaarXtYt(inner_haar_x[89], inner_haar_y[89], x-42, y+35, 14, 44);
	HaarXtYtO(inner_haar_x[90], inner_haar_y[90], x-21, y+21, 14, 45, ori_weight[7]);
	HaarXtYt(inner_haar_x[91], inner_haar_y[91], x-35, y+35, 14, 45);
	HaarXtYt(inner_haar_x[92], inner_haar_y[92], x-35, y+42, 14, 46);
	HaarXtYt(inner_haar_x[93], inner_haar_y[93], x-28, y+35, 14, 46);
	HaarXtYtO(inner_haar_x[94], inner_haar_y[94], x-14, y+21, 14, 47, ori_weight[4]);
	HaarXtYt(inner_haar_x[95], inner_haar_y[95], x-28, y+42, 14, 47);
	HaarXtYtO(inner_haar_x[96], inner_haar_y[96], x-21, y+35, 14, 48, ori_weight[11]);
	HaarXtYt(inner_haar_x[97], inner_haar_y[97], x-21, y+42, 14, 48);
	HaarXtYtO(inner_haar_x[98], inner_haar_y[98], x-14, y+28, 14, 49, ori_weight[8]);
	HaarXtYt(inner_haar_x[99], inner_haar_y[99], x-21, y+49, 14, 49);
	HaarXtYtO(inner_haar_x[100], inner_haar_y[100], x-7, y+21, 14, 50, ori_weight[3]);
	HaarXtYt(inner_haar_x[101], inner_haar_y[101], x-14, y+42, 14, 50);
	HaarXtYt(inner_haar_x[102], inner_haar_y[102], x-14, y+49, 14, 51);
	HaarXtYtO(inner_haar_x[103], inner_haar_y[103], x-7, y+28, 14, 51, ori_weight[6]);
	HaarXtYtO(inner_haar_x[104], inner_haar_y[104], x-7, y+35, 14, 52, ori_weight[10]);
	HaarXtYt(inner_haar_x[105], inner_haar_y[105], x-7, y+42, 14, 52);
	HaarXtYtO(inner_haar_x[106], inner_haar_y[106], x, y+35, 14, 53, ori_weight[9]);
	HaarXtYt(inner_haar_x[107], inner_haar_y[107], x-7, y+49, 14, 53);
	HaarXtYtO(inner_haar_x[108], inner_haar_y[108], x, y+28, 14, 54, ori_weight[5]);
	HaarXtYt(inner_haar_x[109], inner_haar_y[109], x, y+56, 14, 54);
	HaarXtYtO(inner_haar_x[110], inner_haar_y[110], x, y+42, 14, 55, ori_weight[12]);
	HaarXtYt(inner_haar_x[111], inner_haar_y[111], x+7, y+49, 14, 55);
	HaarXtYt(inner_haar_x[112], inner_haar_y[112], x+7, y+42, 14, 56);
	HaarXtYtO(inner_haar_x[113], inner_haar_y[113], x+7, y+35, 14, 56, ori_weight[10]);
	HaarXtYtO(inner_haar_x[114], inner_haar_y[114], x+7, y+28, 14, 57, ori_weight[6]);
	HaarXtYt(inner_haar_x[115], inner_haar_y[115], x+14, y+49, 14, 57);
	HaarXtYtO(inner_haar_x[116], inner_haar_y[116], x+7, y+21, 14, 58, ori_weight[3]);
	HaarXtYt(inner_haar_x[117], inner_haar_y[117], x+14, y+42, 14, 58);
	HaarXtYt(inner_haar_x[118], inner_haar_y[118], x+21, y+49, 14, 59);
	HaarXtYtO(inner_haar_x[119], inner_haar_y[119], x+14, y+28, 14, 59, ori_weight[8]);
	HaarXtYt(inner_haar_x[120], inner_haar_y[120], x+21, y+42, 14, 60);
	HaarXtYtO(inner_haar_x[121], inner_haar_y[121], x+21, y+35, 14, 60, ori_weight[11]);
	HaarXtYtO(inner_haar_x[122], inner_haar_y[122], x+14, y+21, 14, 61, ori_weight[4]);
	HaarXtYt(inner_haar_x[123], inner_haar_y[123], x+28, y+42, 14, 61);
	HaarXtYt(inner_haar_x[124], inner_haar_y[124], x+28, y+35, 14, 62);
	HaarXtYt(inner_haar_x[125], inner_haar_y[125], x+35, y+42, 14, 62);
	HaarXtYtO(inner_haar_x[126], inner_haar_y[126], x+21, y+21, 14, 63, ori_weight[7]);
	HaarXtYt(inner_haar_x[127], inner_haar_y[127], x+35, y+35, 14, 63);
	HaarXtYt(inner_haar_x[128], inner_haar_y[128], x+42, y+35, 14, 64);
	HaarXtYt(inner_haar_x[129], inner_haar_y[129], x+35, y+28, 14, 64);
	HaarXtYtO(inner_haar_x[130], inner_haar_y[130], x+21, y+14, 14, 65, ori_weight[4]);
	HaarXtYt(inner_haar_x[131], inner_haar_y[131], x+42, y+28, 14, 65);
	HaarXtYtO(inner_haar_x[132], inner_haar_y[132], x+35, y+21, 14, 66, ori_weight[11]);
	HaarXtYt(inner_haar_x[133], inner_haar_y[133], x+42, y+21, 14, 66);
	HaarXtYtO(inner_haar_x[134], inner_haar_y[134], x+28, y+14, 14, 67, ori_weight[8]);
	HaarXtYt(inner_haar_x[135], inner_haar_y[135], x+49, y+21, 14, 67);
	HaarXtYtO(inner_haar_x[136], inner_haar_y[136], x+21, y+7, 14, 68, ori_weight[3]);
	HaarXtYt(inner_haar_x[137], inner_haar_y[137], x+42, y+14, 14, 68);
	HaarXtYt(inner_haar_x[138], inner_haar_y[138], x+49, y+14, 14, 69);
	HaarXtYtO(inner_haar_x[139], inner_haar_y[139], x+28, y+7, 14, 69, ori_weight[6]);
	HaarXtYtO(inner_haar_x[140], inner_haar_y[140], x+35, y+7, 14, 70, ori_weight[10]);
	HaarXtYt(inner_haar_x[141], inner_haar_y[141], x+42, y+7, 14, 70);
	HaarXtYtO(inner_haar_x[142], inner_haar_y[142], x+42, y, 14, 71, ori_weight[12]);
	HaarXtYt(inner_haar_x[143], inner_haar_y[143], x+49, y+7, 14, 71);

	HaarXtYt(outer_haar_x[0], outer_haar_y[0], x+63, y, 14, 0);
	HaarXtYt(outer_haar_x[1], outer_haar_y[1], x+84, y, 14, 0);
	HaarXtYt(outer_haar_x[2], outer_haar_y[2], x+105, y, 14, 0);
	HaarXtYt(outer_haar_x[3], outer_haar_y[3], x+98, y-7, 14, 1);
	HaarXtYt(outer_haar_x[4], outer_haar_y[4], x+77, y-7, 14, 1);
	HaarXtYt(outer_haar_x[5], outer_haar_y[5], x+56, y-7, 14, 1);
	HaarXtYt(outer_haar_x[6], outer_haar_y[6], x+84, y-14, 14, 2);
	HaarXtYt(outer_haar_x[7], outer_haar_y[7], x+70, y-14, 14, 2);
	HaarXtYt(outer_haar_x[8], outer_haar_y[8], x+98, y-21, 14, 2);
	HaarXtYt(outer_haar_x[9], outer_haar_y[9], x+56, y-14, 14, 3);
	HaarXtYt(outer_haar_x[10], outer_haar_y[10], x+77, y-21, 14, 3);
	HaarXtYt(outer_haar_x[11], outer_haar_y[11], x+98, y-28, 14, 3);
	HaarXtYt(outer_haar_x[12], outer_haar_y[12], x+98, y-35, 14, 4);
	HaarXtYt(outer_haar_x[13], outer_haar_y[13], x+77, y-28, 14, 4);
	HaarXtYt(outer_haar_x[14], outer_haar_y[14], x+56, y-21, 14, 4);
	HaarXtYt(outer_haar_x[15], outer_haar_y[15], x+91, y-42, 14, 5);
	HaarXtYt(outer_haar_x[16], outer_haar_y[16], x+56, y-28, 14, 5);
	HaarXtYt(outer_haar_x[17], outer_haar_y[17], x+70, y-35, 14, 5);
	HaarXtYt(outer_haar_x[18], outer_haar_y[18], x+91, y-49, 14, 6);
	HaarXtYt(outer_haar_x[19], outer_haar_y[19], x+49, y-28, 14, 6);
	HaarXtYt(outer_haar_x[20], outer_haar_y[20], x+70, y-42, 14, 6);
	HaarXtYt(outer_haar_x[21], outer_haar_y[21], x+70, y-49, 14, 7);
	HaarXtYt(outer_haar_x[22], outer_haar_y[22], x+49, y-35, 14, 7);
	HaarXtYt(outer_haar_x[23], outer_haar_y[23], x+84, y-63, 14, 7);
	HaarXtYt(outer_haar_x[24], outer_haar_y[24], x+49, y-42, 14, 8);
	HaarXtYt(outer_haar_x[25], outer_haar_y[25], x+63, y-56, 14, 8);
	HaarXtYt(outer_haar_x[26], outer_haar_y[26], x+77, y-70, 14, 8);
	HaarXtYt(outer_haar_x[27], outer_haar_y[27], x+42, y-42, 14, 9);
	HaarXtYt(outer_haar_x[28], outer_haar_y[28], x+56, y-56, 14, 9);
	HaarXtYt(outer_haar_x[29], outer_haar_y[29], x+70, y-70, 14, 9);
	HaarXtYt(outer_haar_x[30], outer_haar_y[30], x+70, y-77, 14, 10);
	HaarXtYt(outer_haar_x[31], outer_haar_y[31], x+56, y-63, 14, 10);
	HaarXtYt(outer_haar_x[32], outer_haar_y[32], x+42, y-49, 14, 10);
	HaarXtYt(outer_haar_x[33], outer_haar_y[33], x+63, y-84, 14, 11);
	HaarXtYt(outer_haar_x[34], outer_haar_y[34], x+35, y-49, 14, 11);
	HaarXtYt(outer_haar_x[35], outer_haar_y[35], x+49, y-70, 14, 11);
	HaarXtYt(outer_haar_x[36], outer_haar_y[36], x+42, y-70, 14, 12);
	HaarXtYt(outer_haar_x[37], outer_haar_y[37], x+28, y-49, 14, 12);
	HaarXtYt(outer_haar_x[38], outer_haar_y[38], x+49, y-91, 14, 12);
	HaarXtYt(outer_haar_x[39], outer_haar_y[39], x+28, y-56, 14, 13);
	HaarXtYt(outer_haar_x[40], outer_haar_y[40], x+35, y-70, 14, 13);
	HaarXtYt(outer_haar_x[41], outer_haar_y[41], x+42, y-91, 14, 13);
	HaarXtYt(outer_haar_x[42], outer_haar_y[42], x+21, y-56, 14, 14);
	HaarXtYt(outer_haar_x[43], outer_haar_y[43], x+28, y-77, 14, 14);
	HaarXtYt(outer_haar_x[44], outer_haar_y[44], x+35, y-98, 14, 14);
	HaarXtYt(outer_haar_x[45], outer_haar_y[45], x+28, y-98, 14, 15);
	HaarXtYt(outer_haar_x[46], outer_haar_y[46], x+21, y-77, 14, 15);
	HaarXtYt(outer_haar_x[47], outer_haar_y[47], x+14, y-56, 14, 15);
	HaarXtYt(outer_haar_x[48], outer_haar_y[48], x+21, y-98, 14, 16);
	HaarXtYt(outer_haar_x[49], outer_haar_y[49], x+14, y-70, 14, 16);
	HaarXtYt(outer_haar_x[50], outer_haar_y[50], x+14, y-84, 14, 16);
	HaarXtYt(outer_haar_x[51], outer_haar_y[51], x+7, y-56, 14, 17);
	HaarXtYt(outer_haar_x[52], outer_haar_y[52], x+7, y-77, 14, 17);
	HaarXtYt(outer_haar_x[53], outer_haar_y[53], x+7, y-98, 14, 17);
	HaarXtYt(outer_haar_x[54], outer_haar_y[54], x, y-63, 14, 18);
	HaarXtYt(outer_haar_x[55], outer_haar_y[55], x, y-84, 14, 18);
	HaarXtYt(outer_haar_x[56], outer_haar_y[56], x, y-105, 14, 18);
	HaarXtYt(outer_haar_x[57], outer_haar_y[57], x-7, y-98, 14, 19);
	HaarXtYt(outer_haar_x[58], outer_haar_y[58], x-7, y-77, 14, 19);
	HaarXtYt(outer_haar_x[59], outer_haar_y[59], x-7, y-56, 14, 19);
	HaarXtYt(outer_haar_x[60], outer_haar_y[60], x-14, y-84, 14, 20);
	HaarXtYt(outer_haar_x[61], outer_haar_y[61], x-14, y-70, 14, 20);
	HaarXtYt(outer_haar_x[62], outer_haar_y[62], x-21, y-98, 14, 20);
	HaarXtYt(outer_haar_x[63], outer_haar_y[63], x-14, y-56, 14, 21);
	HaarXtYt(outer_haar_x[64], outer_haar_y[64], x-21, y-77, 14, 21);
	HaarXtYt(outer_haar_x[65], outer_haar_y[65], x-28, y-98, 14, 21);
	HaarXtYt(outer_haar_x[66], outer_haar_y[66], x-35, y-98, 14, 22);
	HaarXtYt(outer_haar_x[67], outer_haar_y[67], x-28, y-77, 14, 22);
	HaarXtYt(outer_haar_x[68], outer_haar_y[68], x-21, y-56, 14, 22);
	HaarXtYt(outer_haar_x[69], outer_haar_y[69], x-42, y-91, 14, 23);
	HaarXtYt(outer_haar_x[70], outer_haar_y[70], x-28, y-56, 14, 23);
	HaarXtYt(outer_haar_x[71], outer_haar_y[71], x-35, y-70, 14, 23);
	HaarXtYt(outer_haar_x[72], outer_haar_y[72], x-49, y-91, 14, 24);
	HaarXtYt(outer_haar_x[73], outer_haar_y[73], x-28, y-49, 14, 24);
	HaarXtYt(outer_haar_x[74], outer_haar_y[74], x-42, y-70, 14, 24);
	HaarXtYt(outer_haar_x[75], outer_haar_y[75], x-49, y-70, 14, 25);
	HaarXtYt(outer_haar_x[76], outer_haar_y[76], x-35, y-49, 14, 25);
	HaarXtYt(outer_haar_x[77], outer_haar_y[77], x-63, y-84, 14, 25);
	HaarXtYt(outer_haar_x[78], outer_haar_y[78], x-42, y-49, 14, 26);
	HaarXtYt(outer_haar_x[79], outer_haar_y[79], x-56, y-63, 14, 26);
	HaarXtYt(outer_haar_x[80], outer_haar_y[80], x-70, y-77, 14, 26);
	HaarXtYt(outer_haar_x[81], outer_haar_y[81], x-42, y-42, 14, 27);
	HaarXtYt(outer_haar_x[82], outer_haar_y[82], x-56, y-56, 14, 27);
	HaarXtYt(outer_haar_x[83], outer_haar_y[83], x-70, y-70, 14, 27);
	HaarXtYt(outer_haar_x[84], outer_haar_y[84], x-77, y-70, 14, 28);
	HaarXtYt(outer_haar_x[85], outer_haar_y[85], x-63, y-56, 14, 28);
	HaarXtYt(outer_haar_x[86], outer_haar_y[86], x-49, y-42, 14, 28);
	HaarXtYt(outer_haar_x[87], outer_haar_y[87], x-84, y-63, 14, 29);
	HaarXtYt(outer_haar_x[88], outer_haar_y[88], x-49, y-35, 14, 29);
	HaarXtYt(outer_haar_x[89], outer_haar_y[89], x-70, y-49, 14, 29);
	HaarXtYt(outer_haar_x[90], outer_haar_y[90], x-70, y-42, 14, 30);
	HaarXtYt(outer_haar_x[91], outer_haar_y[91], x-49, y-28, 14, 30);
	HaarXtYt(outer_haar_x[92], outer_haar_y[92], x-91, y-49, 14, 30);
	HaarXtYt(outer_haar_x[93], outer_haar_y[93], x-56, y-28, 14, 31);
	HaarXtYt(outer_haar_x[94], outer_haar_y[94], x-70, y-35, 14, 31);
	HaarXtYt(outer_haar_x[95], outer_haar_y[95], x-91, y-42, 14, 31);
	HaarXtYt(outer_haar_x[96], outer_haar_y[96], x-56, y-21, 14, 32);
	HaarXtYt(outer_haar_x[97], outer_haar_y[97], x-77, y-28, 14, 32);
	HaarXtYt(outer_haar_x[98], outer_haar_y[98], x-98, y-35, 14, 32);
	HaarXtYt(outer_haar_x[99], outer_haar_y[99], x-98, y-28, 14, 33);
	HaarXtYt(outer_haar_x[100], outer_haar_y[100], x-77, y-21, 14, 33);
	HaarXtYt(outer_haar_x[101], outer_haar_y[101], x-56, y-14, 14, 33);
	HaarXtYt(outer_haar_x[102], outer_haar_y[102], x-98, y-21, 14, 34);
	HaarXtYt(outer_haar_x[103], outer_haar_y[103], x-70, y-14, 14, 34);
	HaarXtYt(outer_haar_x[104], outer_haar_y[104], x-84, y-14, 14, 34);
	HaarXtYt(outer_haar_x[105], outer_haar_y[105], x-56, y-7, 14, 35);
	HaarXtYt(outer_haar_x[106], outer_haar_y[106], x-77, y-7, 14, 35);
	HaarXtYt(outer_haar_x[107], outer_haar_y[107], x-98, y-7, 14, 35);
	HaarXtYt(outer_haar_x[108], outer_haar_y[108], x-63, y, 14, 36);
	HaarXtYt(outer_haar_x[109], outer_haar_y[109], x-84, y, 14, 36);
	HaarXtYt(outer_haar_x[110], outer_haar_y[110], x-105, y, 14, 36);
	HaarXtYt(outer_haar_x[111], outer_haar_y[111], x-98, y+7, 14, 37);
	HaarXtYt(outer_haar_x[112], outer_haar_y[112], x-77, y+7, 14, 37);
	HaarXtYt(outer_haar_x[113], outer_haar_y[113], x-56, y+7, 14, 37);
	HaarXtYt(outer_haar_x[114], outer_haar_y[114], x-84, y+14, 14, 38);
	HaarXtYt(outer_haar_x[115], outer_haar_y[115], x-70, y+14, 14, 38);
	HaarXtYt(outer_haar_x[116], outer_haar_y[116], x-98, y+21, 14, 38);
	HaarXtYt(outer_haar_x[117], outer_haar_y[117], x-56, y+14, 14, 39);
	HaarXtYt(outer_haar_x[118], outer_haar_y[118], x-77, y+21, 14, 39);
	HaarXtYt(outer_haar_x[119], outer_haar_y[119], x-98, y+28, 14, 39);
	HaarXtYt(outer_haar_x[120], outer_haar_y[120], x-98, y+35, 14, 40);
	HaarXtYt(outer_haar_x[121], outer_haar_y[121], x-77, y+28, 14, 40);
	HaarXtYt(outer_haar_x[122], outer_haar_y[122], x-56, y+21, 14, 40);
	HaarXtYt(outer_haar_x[123], outer_haar_y[123], x-91, y+42, 14, 41);
	HaarXtYt(outer_haar_x[124], outer_haar_y[124], x-56, y+28, 14, 41);
	HaarXtYt(outer_haar_x[125], outer_haar_y[125], x-70, y+35, 14, 41);
	HaarXtYt(outer_haar_x[126], outer_haar_y[126], x-91, y+49, 14, 42);
	HaarXtYt(outer_haar_x[127], outer_haar_y[127], x-49, y+28, 14, 42);
	HaarXtYt(outer_haar_x[128], outer_haar_y[128], x-70, y+42, 14, 42);
	HaarXtYt(outer_haar_x[129], outer_haar_y[129], x-70, y+49, 14, 43);
	HaarXtYt(outer_haar_x[130], outer_haar_y[130], x-49, y+35, 14, 43);
	HaarXtYt(outer_haar_x[131], outer_haar_y[131], x-84, y+63, 14, 43);
	HaarXtYt(outer_haar_x[132], outer_haar_y[132], x-49, y+42, 14, 44);
	HaarXtYt(outer_haar_x[133], outer_haar_y[133], x-63, y+56, 14, 44);
	HaarXtYt(outer_haar_x[134], outer_haar_y[134], x-77, y+70, 14, 44);
	HaarXtYt(outer_haar_x[135], outer_haar_y[135], x-42, y+42, 14, 45);
	HaarXtYt(outer_haar_x[136], outer_haar_y[136], x-56, y+56, 14, 45);
	HaarXtYt(outer_haar_x[137], outer_haar_y[137], x-70, y+70, 14, 45);
	HaarXtYt(outer_haar_x[138], outer_haar_y[138], x-70, y+77, 14, 46);
	HaarXtYt(outer_haar_x[139], outer_haar_y[139], x-56, y+63, 14, 46);
	HaarXtYt(outer_haar_x[140], outer_haar_y[140], x-42, y+49, 14, 46);
	HaarXtYt(outer_haar_x[141], outer_haar_y[141], x-63, y+84, 14, 47);
	HaarXtYt(outer_haar_x[142], outer_haar_y[142], x-35, y+49, 14, 47);
	HaarXtYt(outer_haar_x[143], outer_haar_y[143], x-49, y+70, 14, 47);
	HaarXtYt(outer_haar_x[144], outer_haar_y[144], x-42, y+70, 14, 48);
	HaarXtYt(outer_haar_x[145], outer_haar_y[145], x-28, y+49, 14, 48);
	HaarXtYt(outer_haar_x[146], outer_haar_y[146], x-49, y+91, 14, 48);
	HaarXtYt(outer_haar_x[147], outer_haar_y[147], x-28, y+56, 14, 49);
	HaarXtYt(outer_haar_x[148], outer_haar_y[148], x-35, y+70, 14, 49);
	HaarXtYt(outer_haar_x[149], outer_haar_y[149], x-42, y+91, 14, 49);
	HaarXtYt(outer_haar_x[150], outer_haar_y[150], x-21, y+56, 14, 50);
	HaarXtYt(outer_haar_x[151], outer_haar_y[151], x-28, y+77, 14, 50);
	HaarXtYt(outer_haar_x[152], outer_haar_y[152], x-35, y+98, 14, 50);
	HaarXtYt(outer_haar_x[153], outer_haar_y[153], x-28, y+98, 14, 51);
	HaarXtYt(outer_haar_x[154], outer_haar_y[154], x-21, y+77, 14, 51);
	HaarXtYt(outer_haar_x[155], outer_haar_y[155], x-14, y+56, 14, 51);
	HaarXtYt(outer_haar_x[156], outer_haar_y[156], x-21, y+98, 14, 52);
	HaarXtYt(outer_haar_x[157], outer_haar_y[157], x-14, y+70, 14, 52);
	HaarXtYt(outer_haar_x[158], outer_haar_y[158], x-14, y+84, 14, 52);
	HaarXtYt(outer_haar_x[159], outer_haar_y[159], x-7, y+56, 14, 53);
	HaarXtYt(outer_haar_x[160], outer_haar_y[160], x-7, y+77, 14, 53);
	HaarXtYt(outer_haar_x[161], outer_haar_y[161], x-7, y+98, 14, 53);
	HaarXtYt(outer_haar_x[162], outer_haar_y[162], x, y+63, 14, 54);
	HaarXtYt(outer_haar_x[163], outer_haar_y[163], x, y+84, 14, 54);
	HaarXtYt(outer_haar_x[164], outer_haar_y[164], x, y+105, 14, 54);
	HaarXtYt(outer_haar_x[165], outer_haar_y[165], x+7, y+98, 14, 55);
	HaarXtYt(outer_haar_x[166], outer_haar_y[166], x+7, y+77, 14, 55);
	HaarXtYt(outer_haar_x[167], outer_haar_y[167], x+7, y+56, 14, 55);
	HaarXtYt(outer_haar_x[168], outer_haar_y[168], x+14, y+84, 14, 56);
	HaarXtYt(outer_haar_x[169], outer_haar_y[169], x+14, y+70, 14, 56);
	HaarXtYt(outer_haar_x[170], outer_haar_y[170], x+21, y+98, 14, 56);
	HaarXtYt(outer_haar_x[171], outer_haar_y[171], x+14, y+56, 14, 57);
	HaarXtYt(outer_haar_x[172], outer_haar_y[172], x+21, y+77, 14, 57);
	HaarXtYt(outer_haar_x[173], outer_haar_y[173], x+28, y+98, 14, 57);
	HaarXtYt(outer_haar_x[174], outer_haar_y[174], x+35, y+98, 14, 58);
	HaarXtYt(outer_haar_x[175], outer_haar_y[175], x+28, y+77, 14, 58);
	HaarXtYt(outer_haar_x[176], outer_haar_y[176], x+21, y+56, 14, 58);
	HaarXtYt(outer_haar_x[177], outer_haar_y[177], x+42, y+91, 14, 59);
	HaarXtYt(outer_haar_x[178], outer_haar_y[178], x+28, y+56, 14, 59);
	HaarXtYt(outer_haar_x[179], outer_haar_y[179], x+35, y+70, 14, 59);
	HaarXtYt(outer_haar_x[180], outer_haar_y[180], x+49, y+91, 14, 60);
	HaarXtYt(outer_haar_x[181], outer_haar_y[181], x+28, y+49, 14, 60);
	HaarXtYt(outer_haar_x[182], outer_haar_y[182], x+42, y+70, 14, 60);
	HaarXtYt(outer_haar_x[183], outer_haar_y[183], x+49, y+70, 14, 61);
	HaarXtYt(outer_haar_x[184], outer_haar_y[184], x+35, y+49, 14, 61);
	HaarXtYt(outer_haar_x[185], outer_haar_y[185], x+63, y+84, 14, 61);
	HaarXtYt(outer_haar_x[186], outer_haar_y[186], x+42, y+49, 14, 62);
	HaarXtYt(outer_haar_x[187], outer_haar_y[187], x+56, y+63, 14, 62);
	HaarXtYt(outer_haar_x[188], outer_haar_y[188], x+70, y+77, 14, 62);
	HaarXtYt(outer_haar_x[189], outer_haar_y[189], x+42, y+42, 14, 63);
	HaarXtYt(outer_haar_x[190], outer_haar_y[190], x+56, y+56, 14, 63);
	HaarXtYt(outer_haar_x[191], outer_haar_y[191], x+70, y+70, 14, 63);
	HaarXtYt(outer_haar_x[192], outer_haar_y[192], x+77, y+70, 14, 64);
	HaarXtYt(outer_haar_x[193], outer_haar_y[193], x+63, y+56, 14, 64);
	HaarXtYt(outer_haar_x[194], outer_haar_y[194], x+49, y+42, 14, 64);
	HaarXtYt(outer_haar_x[195], outer_haar_y[195], x+84, y+63, 14, 65);
	HaarXtYt(outer_haar_x[196], outer_haar_y[196], x+49, y+35, 14, 65);
	HaarXtYt(outer_haar_x[197], outer_haar_y[197], x+70, y+49, 14, 65);
	HaarXtYt(outer_haar_x[198], outer_haar_y[198], x+70, y+42, 14, 66);
	HaarXtYt(outer_haar_x[199], outer_haar_y[199], x+49, y+28, 14, 66);
	HaarXtYt(outer_haar_x[200], outer_haar_y[200], x+91, y+49, 14, 66);
	HaarXtYt(outer_haar_x[201], outer_haar_y[201], x+56, y+28, 14, 67);
	HaarXtYt(outer_haar_x[202], outer_haar_y[202], x+70, y+35, 14, 67);
	HaarXtYt(outer_haar_x[203], outer_haar_y[203], x+91, y+42, 14, 67);
	HaarXtYt(outer_haar_x[204], outer_haar_y[204], x+56, y+21, 14, 68);
	HaarXtYt(outer_haar_x[205], outer_haar_y[205], x+77, y+28, 14, 68);
	HaarXtYt(outer_haar_x[206], outer_haar_y[206], x+98, y+35, 14, 68);
	HaarXtYt(outer_haar_x[207], outer_haar_y[207], x+98, y+28, 14, 69);
	HaarXtYt(outer_haar_x[208], outer_haar_y[208], x+77, y+21, 14, 69);
	HaarXtYt(outer_haar_x[209], outer_haar_y[209], x+56, y+14, 14, 69);
	HaarXtYt(outer_haar_x[210], outer_haar_y[210], x+98, y+21, 14, 70);
	HaarXtYt(outer_haar_x[211], outer_haar_y[211], x+70, y+14, 14, 70);
	HaarXtYt(outer_haar_x[212], outer_haar_y[212], x+84, y+14, 14, 70);
	HaarXtYt(outer_haar_x[213], outer_haar_y[213], x+56, y+7, 14, 71);
	HaarXtYt(outer_haar_x[214], outer_haar_y[214], x+77, y+7, 14, 71);
	HaarXtYt(outer_haar_x[215], outer_haar_y[215], x+98, y+7, 14, 71);
}

void Scarf::DescriptorResponsesGen8(int x, int y)
{
	ZeroOrientation();

	HaarXYO(center_haar_x[0], center_haar_y[0], x-8, y, 16, ori_weight[0]);
	HaarXYO(center_haar_x[1], center_haar_y[1], x, y+8, 16, ori_weight[0]);
	HaarXYO(center_haar_x[2], center_haar_y[2], x, y-8, 16, ori_weight[0]);
	HaarXYO(center_haar_x[3], center_haar_y[3], x+8, y, 16, ori_weight[0]);
	HaarXYO(center_haar_x[4], center_haar_y[4], x-16, y+8, 16, ori_weight[1]);
	HaarXYO(center_haar_x[5], center_haar_y[5], x-16, y-8, 16, ori_weight[1]);
	HaarXYO(center_haar_x[6], center_haar_y[6], x-8, y+16, 16, ori_weight[1]);
	HaarXYO(center_haar_x[7], center_haar_y[7], x-8, y-16, 16, ori_weight[1]);
	HaarXYO(center_haar_x[8], center_haar_y[8], x+8, y+16, 16, ori_weight[1]);
	HaarXYO(center_haar_x[9], center_haar_y[9], x+8, y-16, 16, ori_weight[1]);
	HaarXYO(center_haar_x[10], center_haar_y[10], x+16, y+8, 16, ori_weight[1]);
	HaarXYO(center_haar_x[11], center_haar_y[11], x+16, y-8, 16, ori_weight[1]);
	HaarXYO(center_haar_x[12], center_haar_y[12], x-24, y, 16, ori_weight[2]);
	HaarXYO(center_haar_x[13], center_haar_y[13], x, y+24, 16, ori_weight[2]);
	HaarXYO(center_haar_x[14], center_haar_y[14], x, y-24, 16, ori_weight[2]);
	HaarXYO(center_haar_x[15], center_haar_y[15], x+24, y, 16, ori_weight[2]);

	HaarXtYtO(inner_haar_x[0], inner_haar_y[0], x+32, y, 16, 0, ori_weight[5]);
	HaarXtYt(inner_haar_x[1], inner_haar_y[1], x+64, y, 16, 0);
	HaarXtYtO(inner_haar_x[2], inner_haar_y[2], x+40, y, 16, 1, ori_weight[9]);
	HaarXtYt(inner_haar_x[3], inner_haar_y[3], x+56, y-8, 16, 1);
	HaarXtYt(inner_haar_x[4], inner_haar_y[4], x+48, y-8, 16, 2);
	HaarXtYtO(inner_haar_x[5], inner_haar_y[5], x+40, y-8, 16, 2, ori_weight[10]);
	HaarXtYtO(inner_haar_x[6], inner_haar_y[6], x+32, y-8, 16, 3, ori_weight[6]);
	HaarXtYt(inner_haar_x[7], inner_haar_y[7], x+56, y-16, 16, 3);
	HaarXtYtO(inner_haar_x[8], inner_haar_y[8], x+24, y-8, 16, 4, ori_weight[3]);
	HaarXtYt(inner_haar_x[9], inner_haar_y[9], x+48, y-16, 16, 4);
	HaarXtYt(inner_haar_x[10], inner_haar_y[10], x+56, y-24, 16, 5);
	HaarXtYtO(inner_haar_x[11], inner_haar_y[11], x+32, y-16, 16, 5, ori_weight[8]);
	HaarXtYt(inner_haar_x[12], inner_haar_y[12], x+48, y-24, 16, 6);
	HaarXtYtO(inner_haar_x[13], inner_haar_y[13], x+40, y-24, 16, 6, ori_weight[11]);
	HaarXtYtO(inner_haar_x[14], inner_haar_y[14], x+24, y-16, 16, 7, ori_weight[4]);
	HaarXtYt(inner_haar_x[15], inner_haar_y[15], x+48, y-32, 16, 7);
	HaarXtYt(inner_haar_x[16], inner_haar_y[16], x+40, y-32, 16, 8);
	HaarXtYt(inner_haar_x[17], inner_haar_y[17], x+48, y-40, 16, 8);
	HaarXtYtO(inner_haar_x[18], inner_haar_y[18], x+24, y-24, 16, 9, ori_weight[7]);
	HaarXtYt(inner_haar_x[19], inner_haar_y[19], x+40, y-40, 16, 9);
	HaarXtYt(inner_haar_x[20], inner_haar_y[20], x+40, y-48, 16, 10);
	HaarXtYt(inner_haar_x[21], inner_haar_y[21], x+32, y-40, 16, 10);
	HaarXtYtO(inner_haar_x[22], inner_haar_y[22], x+16, y-24, 16, 11, ori_weight[4]);
	HaarXtYt(inner_haar_x[23], inner_haar_y[23], x+32, y-48, 16, 11);
	HaarXtYtO(inner_haar_x[24], inner_haar_y[24], x+24, y-40, 16, 12, ori_weight[11]);
	HaarXtYt(inner_haar_x[25], inner_haar_y[25], x+24, y-48, 16, 12);
	HaarXtYtO(inner_haar_x[26], inner_haar_y[26], x+16, y-32, 16, 13, ori_weight[8]);
	HaarXtYt(inner_haar_x[27], inner_haar_y[27], x+24, y-56, 16, 13);
	HaarXtYtO(inner_haar_x[28], inner_haar_y[28], x+8, y-24, 16, 14, ori_weight[3]);
	HaarXtYt(inner_haar_x[29], inner_haar_y[29], x+16, y-48, 16, 14);
	HaarXtYt(inner_haar_x[30], inner_haar_y[30], x+16, y-56, 16, 15);
	HaarXtYtO(inner_haar_x[31], inner_haar_y[31], x+8, y-32, 16, 15, ori_weight[6]);
	HaarXtYtO(inner_haar_x[32], inner_haar_y[32], x+8, y-40, 16, 16, ori_weight[10]);
	HaarXtYt(inner_haar_x[33], inner_haar_y[33], x+8, y-48, 16, 16);
	HaarXtYtO(inner_haar_x[34], inner_haar_y[34], x, y-40, 16, 17, ori_weight[9]);
	HaarXtYt(inner_haar_x[35], inner_haar_y[35], x+8, y-56, 16, 17);
	HaarXtYtO(inner_haar_x[36], inner_haar_y[36], x, y-32, 16, 18, ori_weight[5]);
	HaarXtYt(inner_haar_x[37], inner_haar_y[37], x, y-64, 16, 18);
	HaarXtYtO(inner_haar_x[38], inner_haar_y[38], x, y-48, 16, 19, ori_weight[12]);
	HaarXtYt(inner_haar_x[39], inner_haar_y[39], x-8, y-56, 16, 19);
	HaarXtYt(inner_haar_x[40], inner_haar_y[40], x-8, y-48, 16, 20);
	HaarXtYtO(inner_haar_x[41], inner_haar_y[41], x-8, y-40, 16, 20, ori_weight[10]);
	HaarXtYtO(inner_haar_x[42], inner_haar_y[42], x-8, y-32, 16, 21, ori_weight[6]);
	HaarXtYt(inner_haar_x[43], inner_haar_y[43], x-16, y-56, 16, 21);
	HaarXtYtO(inner_haar_x[44], inner_haar_y[44], x-8, y-24, 16, 22, ori_weight[3]);
	HaarXtYt(inner_haar_x[45], inner_haar_y[45], x-16, y-48, 16, 22);
	HaarXtYt(inner_haar_x[46], inner_haar_y[46], x-24, y-56, 16, 23);
	HaarXtYtO(inner_haar_x[47], inner_haar_y[47], x-16, y-32, 16, 23, ori_weight[8]);
	HaarXtYt(inner_haar_x[48], inner_haar_y[48], x-24, y-48, 16, 24);
	HaarXtYtO(inner_haar_x[49], inner_haar_y[49], x-24, y-40, 16, 24, ori_weight[11]);
	HaarXtYtO(inner_haar_x[50], inner_haar_y[50], x-16, y-24, 16, 25, ori_weight[4]);
	HaarXtYt(inner_haar_x[51], inner_haar_y[51], x-32, y-48, 16, 25);
	HaarXtYt(inner_haar_x[52], inner_haar_y[52], x-32, y-40, 16, 26);
	HaarXtYt(inner_haar_x[53], inner_haar_y[53], x-40, y-48, 16, 26);
	HaarXtYtO(inner_haar_x[54], inner_haar_y[54], x-24, y-24, 16, 27, ori_weight[7]);
	HaarXtYt(inner_haar_x[55], inner_haar_y[55], x-40, y-40, 16, 27);
	HaarXtYt(inner_haar_x[56], inner_haar_y[56], x-48, y-40, 16, 28);
	HaarXtYt(inner_haar_x[57], inner_haar_y[57], x-40, y-32, 16, 28);
	HaarXtYtO(inner_haar_x[58], inner_haar_y[58], x-24, y-16, 16, 29, ori_weight[4]);
	HaarXtYt(inner_haar_x[59], inner_haar_y[59], x-48, y-32, 16, 29);
	HaarXtYtO(inner_haar_x[60], inner_haar_y[60], x-40, y-24, 16, 30, ori_weight[11]);
	HaarXtYt(inner_haar_x[61], inner_haar_y[61], x-48, y-24, 16, 30);
	HaarXtYtO(inner_haar_x[62], inner_haar_y[62], x-32, y-16, 16, 31, ori_weight[8]);
	HaarXtYt(inner_haar_x[63], inner_haar_y[63], x-56, y-24, 16, 31);
	HaarXtYtO(inner_haar_x[64], inner_haar_y[64], x-24, y-8, 16, 32, ori_weight[3]);
	HaarXtYt(inner_haar_x[65], inner_haar_y[65], x-48, y-16, 16, 32);
	HaarXtYt(inner_haar_x[66], inner_haar_y[66], x-56, y-16, 16, 33);
	HaarXtYtO(inner_haar_x[67], inner_haar_y[67], x-32, y-8, 16, 33, ori_weight[6]);
	HaarXtYtO(inner_haar_x[68], inner_haar_y[68], x-40, y-8, 16, 34, ori_weight[10]);
	HaarXtYt(inner_haar_x[69], inner_haar_y[69], x-48, y-8, 16, 34);
	HaarXtYtO(inner_haar_x[70], inner_haar_y[70], x-40, y, 16, 35, ori_weight[9]);
	HaarXtYt(inner_haar_x[71], inner_haar_y[71], x-56, y-8, 16, 35);
	HaarXtYtO(inner_haar_x[72], inner_haar_y[72], x-32, y, 16, 36, ori_weight[5]);
	HaarXtYt(inner_haar_x[73], inner_haar_y[73], x-64, y, 16, 36);
	HaarXtYtO(inner_haar_x[74], inner_haar_y[74], x-48, y, 16, 37, ori_weight[12]);
	HaarXtYt(inner_haar_x[75], inner_haar_y[75], x-56, y+8, 16, 37);
	HaarXtYt(inner_haar_x[76], inner_haar_y[76], x-48, y+8, 16, 38);
	HaarXtYtO(inner_haar_x[77], inner_haar_y[77], x-40, y+8, 16, 38, ori_weight[10]);
	HaarXtYtO(inner_haar_x[78], inner_haar_y[78], x-32, y+8, 16, 39, ori_weight[6]);
	HaarXtYt(inner_haar_x[79], inner_haar_y[79], x-56, y+16, 16, 39);
	HaarXtYtO(inner_haar_x[80], inner_haar_y[80], x-24, y+8, 16, 40, ori_weight[3]);
	HaarXtYt(inner_haar_x[81], inner_haar_y[81], x-48, y+16, 16, 40);
	HaarXtYt(inner_haar_x[82], inner_haar_y[82], x-56, y+24, 16, 41);
	HaarXtYtO(inner_haar_x[83], inner_haar_y[83], x-32, y+16, 16, 41, ori_weight[8]);
	HaarXtYt(inner_haar_x[84], inner_haar_y[84], x-48, y+24, 16, 42);
	HaarXtYtO(inner_haar_x[85], inner_haar_y[85], x-40, y+24, 16, 42, ori_weight[11]);
	HaarXtYtO(inner_haar_x[86], inner_haar_y[86], x-24, y+16, 16, 43, ori_weight[4]);
	HaarXtYt(inner_haar_x[87], inner_haar_y[87], x-48, y+32, 16, 43);
	HaarXtYt(inner_haar_x[88], inner_haar_y[88], x-40, y+32, 16, 44);
	HaarXtYt(inner_haar_x[89], inner_haar_y[89], x-48, y+40, 16, 44);
	HaarXtYtO(inner_haar_x[90], inner_haar_y[90], x-24, y+24, 16, 45, ori_weight[7]);
	HaarXtYt(inner_haar_x[91], inner_haar_y[91], x-40, y+40, 16, 45);
	HaarXtYt(inner_haar_x[92], inner_haar_y[92], x-40, y+48, 16, 46);
	HaarXtYt(inner_haar_x[93], inner_haar_y[93], x-32, y+40, 16, 46);
	HaarXtYtO(inner_haar_x[94], inner_haar_y[94], x-16, y+24, 16, 47, ori_weight[4]);
	HaarXtYt(inner_haar_x[95], inner_haar_y[95], x-32, y+48, 16, 47);
	HaarXtYtO(inner_haar_x[96], inner_haar_y[96], x-24, y+40, 16, 48, ori_weight[11]);
	HaarXtYt(inner_haar_x[97], inner_haar_y[97], x-24, y+48, 16, 48);
	HaarXtYtO(inner_haar_x[98], inner_haar_y[98], x-16, y+32, 16, 49, ori_weight[8]);
	HaarXtYt(inner_haar_x[99], inner_haar_y[99], x-24, y+56, 16, 49);
	HaarXtYtO(inner_haar_x[100], inner_haar_y[100], x-8, y+24, 16, 50, ori_weight[3]);
	HaarXtYt(inner_haar_x[101], inner_haar_y[101], x-16, y+48, 16, 50);
	HaarXtYt(inner_haar_x[102], inner_haar_y[102], x-16, y+56, 16, 51);
	HaarXtYtO(inner_haar_x[103], inner_haar_y[103], x-8, y+32, 16, 51, ori_weight[6]);
	HaarXtYtO(inner_haar_x[104], inner_haar_y[104], x-8, y+40, 16, 52, ori_weight[10]);
	HaarXtYt(inner_haar_x[105], inner_haar_y[105], x-8, y+48, 16, 52);
	HaarXtYtO(inner_haar_x[106], inner_haar_y[106], x, y+40, 16, 53, ori_weight[9]);
	HaarXtYt(inner_haar_x[107], inner_haar_y[107], x-8, y+56, 16, 53);
	HaarXtYtO(inner_haar_x[108], inner_haar_y[108], x, y+32, 16, 54, ori_weight[5]);
	HaarXtYt(inner_haar_x[109], inner_haar_y[109], x, y+64, 16, 54);
	HaarXtYtO(inner_haar_x[110], inner_haar_y[110], x, y+48, 16, 55, ori_weight[12]);
	HaarXtYt(inner_haar_x[111], inner_haar_y[111], x+8, y+56, 16, 55);
	HaarXtYt(inner_haar_x[112], inner_haar_y[112], x+8, y+48, 16, 56);
	HaarXtYtO(inner_haar_x[113], inner_haar_y[113], x+8, y+40, 16, 56, ori_weight[10]);
	HaarXtYtO(inner_haar_x[114], inner_haar_y[114], x+8, y+32, 16, 57, ori_weight[6]);
	HaarXtYt(inner_haar_x[115], inner_haar_y[115], x+16, y+56, 16, 57);
	HaarXtYtO(inner_haar_x[116], inner_haar_y[116], x+8, y+24, 16, 58, ori_weight[3]);
	HaarXtYt(inner_haar_x[117], inner_haar_y[117], x+16, y+48, 16, 58);
	HaarXtYt(inner_haar_x[118], inner_haar_y[118], x+24, y+56, 16, 59);
	HaarXtYtO(inner_haar_x[119], inner_haar_y[119], x+16, y+32, 16, 59, ori_weight[8]);
	HaarXtYt(inner_haar_x[120], inner_haar_y[120], x+24, y+48, 16, 60);
	HaarXtYtO(inner_haar_x[121], inner_haar_y[121], x+24, y+40, 16, 60, ori_weight[11]);
	HaarXtYtO(inner_haar_x[122], inner_haar_y[122], x+16, y+24, 16, 61, ori_weight[4]);
	HaarXtYt(inner_haar_x[123], inner_haar_y[123], x+32, y+48, 16, 61);
	HaarXtYt(inner_haar_x[124], inner_haar_y[124], x+32, y+40, 16, 62);
	HaarXtYt(inner_haar_x[125], inner_haar_y[125], x+40, y+48, 16, 62);
	HaarXtYtO(inner_haar_x[126], inner_haar_y[126], x+24, y+24, 16, 63, ori_weight[7]);
	HaarXtYt(inner_haar_x[127], inner_haar_y[127], x+40, y+40, 16, 63);
	HaarXtYt(inner_haar_x[128], inner_haar_y[128], x+48, y+40, 16, 64);
	HaarXtYt(inner_haar_x[129], inner_haar_y[129], x+40, y+32, 16, 64);
	HaarXtYtO(inner_haar_x[130], inner_haar_y[130], x+24, y+16, 16, 65, ori_weight[4]);
	HaarXtYt(inner_haar_x[131], inner_haar_y[131], x+48, y+32, 16, 65);
	HaarXtYtO(inner_haar_x[132], inner_haar_y[132], x+40, y+24, 16, 66, ori_weight[11]);
	HaarXtYt(inner_haar_x[133], inner_haar_y[133], x+48, y+24, 16, 66);
	HaarXtYtO(inner_haar_x[134], inner_haar_y[134], x+32, y+16, 16, 67, ori_weight[8]);
	HaarXtYt(inner_haar_x[135], inner_haar_y[135], x+56, y+24, 16, 67);
	HaarXtYtO(inner_haar_x[136], inner_haar_y[136], x+24, y+8, 16, 68, ori_weight[3]);
	HaarXtYt(inner_haar_x[137], inner_haar_y[137], x+48, y+16, 16, 68);
	HaarXtYt(inner_haar_x[138], inner_haar_y[138], x+56, y+16, 16, 69);
	HaarXtYtO(inner_haar_x[139], inner_haar_y[139], x+32, y+8, 16, 69, ori_weight[6]);
	HaarXtYtO(inner_haar_x[140], inner_haar_y[140], x+40, y+8, 16, 70, ori_weight[10]);
	HaarXtYt(inner_haar_x[141], inner_haar_y[141], x+48, y+8, 16, 70);
	HaarXtYtO(inner_haar_x[142], inner_haar_y[142], x+48, y, 16, 71, ori_weight[12]);
	HaarXtYt(inner_haar_x[143], inner_haar_y[143], x+56, y+8, 16, 71);

	HaarXtYt(outer_haar_x[0], outer_haar_y[0], x+72, y, 16, 0);
	HaarXtYt(outer_haar_x[1], outer_haar_y[1], x+96, y, 16, 0);
	HaarXtYt(outer_haar_x[2], outer_haar_y[2], x+120, y, 16, 0);
	HaarXtYt(outer_haar_x[3], outer_haar_y[3], x+112, y-8, 16, 1);
	HaarXtYt(outer_haar_x[4], outer_haar_y[4], x+88, y-8, 16, 1);
	HaarXtYt(outer_haar_x[5], outer_haar_y[5], x+64, y-8, 16, 1);
	HaarXtYt(outer_haar_x[6], outer_haar_y[6], x+96, y-16, 16, 2);
	HaarXtYt(outer_haar_x[7], outer_haar_y[7], x+80, y-16, 16, 2);
	HaarXtYt(outer_haar_x[8], outer_haar_y[8], x+112, y-24, 16, 2);
	HaarXtYt(outer_haar_x[9], outer_haar_y[9], x+64, y-16, 16, 3);
	HaarXtYt(outer_haar_x[10], outer_haar_y[10], x+88, y-24, 16, 3);
	HaarXtYt(outer_haar_x[11], outer_haar_y[11], x+112, y-32, 16, 3);
	HaarXtYt(outer_haar_x[12], outer_haar_y[12], x+112, y-40, 16, 4);
	HaarXtYt(outer_haar_x[13], outer_haar_y[13], x+88, y-32, 16, 4);
	HaarXtYt(outer_haar_x[14], outer_haar_y[14], x+64, y-24, 16, 4);
	HaarXtYt(outer_haar_x[15], outer_haar_y[15], x+104, y-48, 16, 5);
	HaarXtYt(outer_haar_x[16], outer_haar_y[16], x+64, y-32, 16, 5);
	HaarXtYt(outer_haar_x[17], outer_haar_y[17], x+80, y-40, 16, 5);
	HaarXtYt(outer_haar_x[18], outer_haar_y[18], x+104, y-56, 16, 6);
	HaarXtYt(outer_haar_x[19], outer_haar_y[19], x+56, y-32, 16, 6);
	HaarXtYt(outer_haar_x[20], outer_haar_y[20], x+80, y-48, 16, 6);
	HaarXtYt(outer_haar_x[21], outer_haar_y[21], x+80, y-56, 16, 7);
	HaarXtYt(outer_haar_x[22], outer_haar_y[22], x+56, y-40, 16, 7);
	HaarXtYt(outer_haar_x[23], outer_haar_y[23], x+96, y-72, 16, 7);
	HaarXtYt(outer_haar_x[24], outer_haar_y[24], x+56, y-48, 16, 8);
	HaarXtYt(outer_haar_x[25], outer_haar_y[25], x+72, y-64, 16, 8);
	HaarXtYt(outer_haar_x[26], outer_haar_y[26], x+88, y-80, 16, 8);
	HaarXtYt(outer_haar_x[27], outer_haar_y[27], x+48, y-48, 16, 9);
	HaarXtYt(outer_haar_x[28], outer_haar_y[28], x+64, y-64, 16, 9);
	HaarXtYt(outer_haar_x[29], outer_haar_y[29], x+80, y-80, 16, 9);
	HaarXtYt(outer_haar_x[30], outer_haar_y[30], x+80, y-88, 16, 10);
	HaarXtYt(outer_haar_x[31], outer_haar_y[31], x+64, y-72, 16, 10);
	HaarXtYt(outer_haar_x[32], outer_haar_y[32], x+48, y-56, 16, 10);
	HaarXtYt(outer_haar_x[33], outer_haar_y[33], x+72, y-96, 16, 11);
	HaarXtYt(outer_haar_x[34], outer_haar_y[34], x+40, y-56, 16, 11);
	HaarXtYt(outer_haar_x[35], outer_haar_y[35], x+56, y-80, 16, 11);
	HaarXtYt(outer_haar_x[36], outer_haar_y[36], x+48, y-80, 16, 12);
	HaarXtYt(outer_haar_x[37], outer_haar_y[37], x+32, y-56, 16, 12);
	HaarXtYt(outer_haar_x[38], outer_haar_y[38], x+56, y-104, 16, 12);
	HaarXtYt(outer_haar_x[39], outer_haar_y[39], x+32, y-64, 16, 13);
	HaarXtYt(outer_haar_x[40], outer_haar_y[40], x+40, y-80, 16, 13);
	HaarXtYt(outer_haar_x[41], outer_haar_y[41], x+48, y-104, 16, 13);
	HaarXtYt(outer_haar_x[42], outer_haar_y[42], x+24, y-64, 16, 14);
	HaarXtYt(outer_haar_x[43], outer_haar_y[43], x+32, y-88, 16, 14);
	HaarXtYt(outer_haar_x[44], outer_haar_y[44], x+40, y-112, 16, 14);
	HaarXtYt(outer_haar_x[45], outer_haar_y[45], x+32, y-112, 16, 15);
	HaarXtYt(outer_haar_x[46], outer_haar_y[46], x+24, y-88, 16, 15);
	HaarXtYt(outer_haar_x[47], outer_haar_y[47], x+16, y-64, 16, 15);
	HaarXtYt(outer_haar_x[48], outer_haar_y[48], x+24, y-112, 16, 16);
	HaarXtYt(outer_haar_x[49], outer_haar_y[49], x+16, y-80, 16, 16);
	HaarXtYt(outer_haar_x[50], outer_haar_y[50], x+16, y-96, 16, 16);
	HaarXtYt(outer_haar_x[51], outer_haar_y[51], x+8, y-64, 16, 17);
	HaarXtYt(outer_haar_x[52], outer_haar_y[52], x+8, y-88, 16, 17);
	HaarXtYt(outer_haar_x[53], outer_haar_y[53], x+8, y-112, 16, 17);
	HaarXtYt(outer_haar_x[54], outer_haar_y[54], x, y-72, 16, 18);
	HaarXtYt(outer_haar_x[55], outer_haar_y[55], x, y-96, 16, 18);
	HaarXtYt(outer_haar_x[56], outer_haar_y[56], x, y-120, 16, 18);
	HaarXtYt(outer_haar_x[57], outer_haar_y[57], x-8, y-112, 16, 19);
	HaarXtYt(outer_haar_x[58], outer_haar_y[58], x-8, y-88, 16, 19);
	HaarXtYt(outer_haar_x[59], outer_haar_y[59], x-8, y-64, 16, 19);
	HaarXtYt(outer_haar_x[60], outer_haar_y[60], x-16, y-96, 16, 20);
	HaarXtYt(outer_haar_x[61], outer_haar_y[61], x-16, y-80, 16, 20);
	HaarXtYt(outer_haar_x[62], outer_haar_y[62], x-24, y-112, 16, 20);
	HaarXtYt(outer_haar_x[63], outer_haar_y[63], x-16, y-64, 16, 21);
	HaarXtYt(outer_haar_x[64], outer_haar_y[64], x-24, y-88, 16, 21);
	HaarXtYt(outer_haar_x[65], outer_haar_y[65], x-32, y-112, 16, 21);
	HaarXtYt(outer_haar_x[66], outer_haar_y[66], x-40, y-112, 16, 22);
	HaarXtYt(outer_haar_x[67], outer_haar_y[67], x-32, y-88, 16, 22);
	HaarXtYt(outer_haar_x[68], outer_haar_y[68], x-24, y-64, 16, 22);
	HaarXtYt(outer_haar_x[69], outer_haar_y[69], x-48, y-104, 16, 23);
	HaarXtYt(outer_haar_x[70], outer_haar_y[70], x-32, y-64, 16, 23);
	HaarXtYt(outer_haar_x[71], outer_haar_y[71], x-40, y-80, 16, 23);
	HaarXtYt(outer_haar_x[72], outer_haar_y[72], x-56, y-104, 16, 24);
	HaarXtYt(outer_haar_x[73], outer_haar_y[73], x-32, y-56, 16, 24);
	HaarXtYt(outer_haar_x[74], outer_haar_y[74], x-48, y-80, 16, 24);
	HaarXtYt(outer_haar_x[75], outer_haar_y[75], x-56, y-80, 16, 25);
	HaarXtYt(outer_haar_x[76], outer_haar_y[76], x-40, y-56, 16, 25);
	HaarXtYt(outer_haar_x[77], outer_haar_y[77], x-72, y-96, 16, 25);
	HaarXtYt(outer_haar_x[78], outer_haar_y[78], x-48, y-56, 16, 26);
	HaarXtYt(outer_haar_x[79], outer_haar_y[79], x-64, y-72, 16, 26);
	HaarXtYt(outer_haar_x[80], outer_haar_y[80], x-80, y-88, 16, 26);
	HaarXtYt(outer_haar_x[81], outer_haar_y[81], x-48, y-48, 16, 27);
	HaarXtYt(outer_haar_x[82], outer_haar_y[82], x-64, y-64, 16, 27);
	HaarXtYt(outer_haar_x[83], outer_haar_y[83], x-80, y-80, 16, 27);
	HaarXtYt(outer_haar_x[84], outer_haar_y[84], x-88, y-80, 16, 28);
	HaarXtYt(outer_haar_x[85], outer_haar_y[85], x-72, y-64, 16, 28);
	HaarXtYt(outer_haar_x[86], outer_haar_y[86], x-56, y-48, 16, 28);
	HaarXtYt(outer_haar_x[87], outer_haar_y[87], x-96, y-72, 16, 29);
	HaarXtYt(outer_haar_x[88], outer_haar_y[88], x-56, y-40, 16, 29);
	HaarXtYt(outer_haar_x[89], outer_haar_y[89], x-80, y-56, 16, 29);
	HaarXtYt(outer_haar_x[90], outer_haar_y[90], x-80, y-48, 16, 30);
	HaarXtYt(outer_haar_x[91], outer_haar_y[91], x-56, y-32, 16, 30);
	HaarXtYt(outer_haar_x[92], outer_haar_y[92], x-104, y-56, 16, 30);
	HaarXtYt(outer_haar_x[93], outer_haar_y[93], x-64, y-32, 16, 31);
	HaarXtYt(outer_haar_x[94], outer_haar_y[94], x-80, y-40, 16, 31);
	HaarXtYt(outer_haar_x[95], outer_haar_y[95], x-104, y-48, 16, 31);
	HaarXtYt(outer_haar_x[96], outer_haar_y[96], x-64, y-24, 16, 32);
	HaarXtYt(outer_haar_x[97], outer_haar_y[97], x-88, y-32, 16, 32);
	HaarXtYt(outer_haar_x[98], outer_haar_y[98], x-112, y-40, 16, 32);
	HaarXtYt(outer_haar_x[99], outer_haar_y[99], x-112, y-32, 16, 33);
	HaarXtYt(outer_haar_x[100], outer_haar_y[100], x-88, y-24, 16, 33);
	HaarXtYt(outer_haar_x[101], outer_haar_y[101], x-64, y-16, 16, 33);
	HaarXtYt(outer_haar_x[102], outer_haar_y[102], x-112, y-24, 16, 34);
	HaarXtYt(outer_haar_x[103], outer_haar_y[103], x-80, y-16, 16, 34);
	HaarXtYt(outer_haar_x[104], outer_haar_y[104], x-96, y-16, 16, 34);
	HaarXtYt(outer_haar_x[105], outer_haar_y[105], x-64, y-8, 16, 35);
	HaarXtYt(outer_haar_x[106], outer_haar_y[106], x-88, y-8, 16, 35);
	HaarXtYt(outer_haar_x[107], outer_haar_y[107], x-112, y-8, 16, 35);
	HaarXtYt(outer_haar_x[108], outer_haar_y[108], x-72, y, 16, 36);
	HaarXtYt(outer_haar_x[109], outer_haar_y[109], x-96, y, 16, 36);
	HaarXtYt(outer_haar_x[110], outer_haar_y[110], x-120, y, 16, 36);
	HaarXtYt(outer_haar_x[111], outer_haar_y[111], x-112, y+8, 16, 37);
	HaarXtYt(outer_haar_x[112], outer_haar_y[112], x-88, y+8, 16, 37);
	HaarXtYt(outer_haar_x[113], outer_haar_y[113], x-64, y+8, 16, 37);
	HaarXtYt(outer_haar_x[114], outer_haar_y[114], x-96, y+16, 16, 38);
	HaarXtYt(outer_haar_x[115], outer_haar_y[115], x-80, y+16, 16, 38);
	HaarXtYt(outer_haar_x[116], outer_haar_y[116], x-112, y+24, 16, 38);
	HaarXtYt(outer_haar_x[117], outer_haar_y[117], x-64, y+16, 16, 39);
	HaarXtYt(outer_haar_x[118], outer_haar_y[118], x-88, y+24, 16, 39);
	HaarXtYt(outer_haar_x[119], outer_haar_y[119], x-112, y+32, 16, 39);
	HaarXtYt(outer_haar_x[120], outer_haar_y[120], x-112, y+40, 16, 40);
	HaarXtYt(outer_haar_x[121], outer_haar_y[121], x-88, y+32, 16, 40);
	HaarXtYt(outer_haar_x[122], outer_haar_y[122], x-64, y+24, 16, 40);
	HaarXtYt(outer_haar_x[123], outer_haar_y[123], x-104, y+48, 16, 41);
	HaarXtYt(outer_haar_x[124], outer_haar_y[124], x-64, y+32, 16, 41);
	HaarXtYt(outer_haar_x[125], outer_haar_y[125], x-80, y+40, 16, 41);
	HaarXtYt(outer_haar_x[126], outer_haar_y[126], x-104, y+56, 16, 42);
	HaarXtYt(outer_haar_x[127], outer_haar_y[127], x-56, y+32, 16, 42);
	HaarXtYt(outer_haar_x[128], outer_haar_y[128], x-80, y+48, 16, 42);
	HaarXtYt(outer_haar_x[129], outer_haar_y[129], x-80, y+56, 16, 43);
	HaarXtYt(outer_haar_x[130], outer_haar_y[130], x-56, y+40, 16, 43);
	HaarXtYt(outer_haar_x[131], outer_haar_y[131], x-96, y+72, 16, 43);
	HaarXtYt(outer_haar_x[132], outer_haar_y[132], x-56, y+48, 16, 44);
	HaarXtYt(outer_haar_x[133], outer_haar_y[133], x-72, y+64, 16, 44);
	HaarXtYt(outer_haar_x[134], outer_haar_y[134], x-88, y+80, 16, 44);
	HaarXtYt(outer_haar_x[135], outer_haar_y[135], x-48, y+48, 16, 45);
	HaarXtYt(outer_haar_x[136], outer_haar_y[136], x-64, y+64, 16, 45);
	HaarXtYt(outer_haar_x[137], outer_haar_y[137], x-80, y+80, 16, 45);
	HaarXtYt(outer_haar_x[138], outer_haar_y[138], x-80, y+88, 16, 46);
	HaarXtYt(outer_haar_x[139], outer_haar_y[139], x-64, y+72, 16, 46);
	HaarXtYt(outer_haar_x[140], outer_haar_y[140], x-48, y+56, 16, 46);
	HaarXtYt(outer_haar_x[141], outer_haar_y[141], x-72, y+96, 16, 47);
	HaarXtYt(outer_haar_x[142], outer_haar_y[142], x-40, y+56, 16, 47);
	HaarXtYt(outer_haar_x[143], outer_haar_y[143], x-56, y+80, 16, 47);
	HaarXtYt(outer_haar_x[144], outer_haar_y[144], x-48, y+80, 16, 48);
	HaarXtYt(outer_haar_x[145], outer_haar_y[145], x-32, y+56, 16, 48);
	HaarXtYt(outer_haar_x[146], outer_haar_y[146], x-56, y+104, 16, 48);
	HaarXtYt(outer_haar_x[147], outer_haar_y[147], x-32, y+64, 16, 49);
	HaarXtYt(outer_haar_x[148], outer_haar_y[148], x-40, y+80, 16, 49);
	HaarXtYt(outer_haar_x[149], outer_haar_y[149], x-48, y+104, 16, 49);
	HaarXtYt(outer_haar_x[150], outer_haar_y[150], x-24, y+64, 16, 50);
	HaarXtYt(outer_haar_x[151], outer_haar_y[151], x-32, y+88, 16, 50);
	HaarXtYt(outer_haar_x[152], outer_haar_y[152], x-40, y+112, 16, 50);
	HaarXtYt(outer_haar_x[153], outer_haar_y[153], x-32, y+112, 16, 51);
	HaarXtYt(outer_haar_x[154], outer_haar_y[154], x-24, y+88, 16, 51);
	HaarXtYt(outer_haar_x[155], outer_haar_y[155], x-16, y+64, 16, 51);
	HaarXtYt(outer_haar_x[156], outer_haar_y[156], x-24, y+112, 16, 52);
	HaarXtYt(outer_haar_x[157], outer_haar_y[157], x-16, y+80, 16, 52);
	HaarXtYt(outer_haar_x[158], outer_haar_y[158], x-16, y+96, 16, 52);
	HaarXtYt(outer_haar_x[159], outer_haar_y[159], x-8, y+64, 16, 53);
	HaarXtYt(outer_haar_x[160], outer_haar_y[160], x-8, y+88, 16, 53);
	HaarXtYt(outer_haar_x[161], outer_haar_y[161], x-8, y+112, 16, 53);
	HaarXtYt(outer_haar_x[162], outer_haar_y[162], x, y+72, 16, 54);
	HaarXtYt(outer_haar_x[163], outer_haar_y[163], x, y+96, 16, 54);
	HaarXtYt(outer_haar_x[164], outer_haar_y[164], x, y+120, 16, 54);
	HaarXtYt(outer_haar_x[165], outer_haar_y[165], x+8, y+112, 16, 55);
	HaarXtYt(outer_haar_x[166], outer_haar_y[166], x+8, y+88, 16, 55);
	HaarXtYt(outer_haar_x[167], outer_haar_y[167], x+8, y+64, 16, 55);
	HaarXtYt(outer_haar_x[168], outer_haar_y[168], x+16, y+96, 16, 56);
	HaarXtYt(outer_haar_x[169], outer_haar_y[169], x+16, y+80, 16, 56);
	HaarXtYt(outer_haar_x[170], outer_haar_y[170], x+24, y+112, 16, 56);
	HaarXtYt(outer_haar_x[171], outer_haar_y[171], x+16, y+64, 16, 57);
	HaarXtYt(outer_haar_x[172], outer_haar_y[172], x+24, y+88, 16, 57);
	HaarXtYt(outer_haar_x[173], outer_haar_y[173], x+32, y+112, 16, 57);
	HaarXtYt(outer_haar_x[174], outer_haar_y[174], x+40, y+112, 16, 58);
	HaarXtYt(outer_haar_x[175], outer_haar_y[175], x+32, y+88, 16, 58);
	HaarXtYt(outer_haar_x[176], outer_haar_y[176], x+24, y+64, 16, 58);
	HaarXtYt(outer_haar_x[177], outer_haar_y[177], x+48, y+104, 16, 59);
	HaarXtYt(outer_haar_x[178], outer_haar_y[178], x+32, y+64, 16, 59);
	HaarXtYt(outer_haar_x[179], outer_haar_y[179], x+40, y+80, 16, 59);
	HaarXtYt(outer_haar_x[180], outer_haar_y[180], x+56, y+104, 16, 60);
	HaarXtYt(outer_haar_x[181], outer_haar_y[181], x+32, y+56, 16, 60);
	HaarXtYt(outer_haar_x[182], outer_haar_y[182], x+48, y+80, 16, 60);
	HaarXtYt(outer_haar_x[183], outer_haar_y[183], x+56, y+80, 16, 61);
	HaarXtYt(outer_haar_x[184], outer_haar_y[184], x+40, y+56, 16, 61);
	HaarXtYt(outer_haar_x[185], outer_haar_y[185], x+72, y+96, 16, 61);
	HaarXtYt(outer_haar_x[186], outer_haar_y[186], x+48, y+56, 16, 62);
	HaarXtYt(outer_haar_x[187], outer_haar_y[187], x+64, y+72, 16, 62);
	HaarXtYt(outer_haar_x[188], outer_haar_y[188], x+80, y+88, 16, 62);
	HaarXtYt(outer_haar_x[189], outer_haar_y[189], x+48, y+48, 16, 63);
	HaarXtYt(outer_haar_x[190], outer_haar_y[190], x+64, y+64, 16, 63);
	HaarXtYt(outer_haar_x[191], outer_haar_y[191], x+80, y+80, 16, 63);
	HaarXtYt(outer_haar_x[192], outer_haar_y[192], x+88, y+80, 16, 64);
	HaarXtYt(outer_haar_x[193], outer_haar_y[193], x+72, y+64, 16, 64);
	HaarXtYt(outer_haar_x[194], outer_haar_y[194], x+56, y+48, 16, 64);
	HaarXtYt(outer_haar_x[195], outer_haar_y[195], x+96, y+72, 16, 65);
	HaarXtYt(outer_haar_x[196], outer_haar_y[196], x+56, y+40, 16, 65);
	HaarXtYt(outer_haar_x[197], outer_haar_y[197], x+80, y+56, 16, 65);
	HaarXtYt(outer_haar_x[198], outer_haar_y[198], x+80, y+48, 16, 66);
	HaarXtYt(outer_haar_x[199], outer_haar_y[199], x+56, y+32, 16, 66);
	HaarXtYt(outer_haar_x[200], outer_haar_y[200], x+104, y+56, 16, 66);
	HaarXtYt(outer_haar_x[201], outer_haar_y[201], x+64, y+32, 16, 67);
	HaarXtYt(outer_haar_x[202], outer_haar_y[202], x+80, y+40, 16, 67);
	HaarXtYt(outer_haar_x[203], outer_haar_y[203], x+104, y+48, 16, 67);
	HaarXtYt(outer_haar_x[204], outer_haar_y[204], x+64, y+24, 16, 68);
	HaarXtYt(outer_haar_x[205], outer_haar_y[205], x+88, y+32, 16, 68);
	HaarXtYt(outer_haar_x[206], outer_haar_y[206], x+112, y+40, 16, 68);
	HaarXtYt(outer_haar_x[207], outer_haar_y[207], x+112, y+32, 16, 69);
	HaarXtYt(outer_haar_x[208], outer_haar_y[208], x+88, y+24, 16, 69);
	HaarXtYt(outer_haar_x[209], outer_haar_y[209], x+64, y+16, 16, 69);
	HaarXtYt(outer_haar_x[210], outer_haar_y[210], x+112, y+24, 16, 70);
	HaarXtYt(outer_haar_x[211], outer_haar_y[211], x+80, y+16, 16, 70);
	HaarXtYt(outer_haar_x[212], outer_haar_y[212], x+96, y+16, 16, 70);
	HaarXtYt(outer_haar_x[213], outer_haar_y[213], x+64, y+8, 16, 71);
	HaarXtYt(outer_haar_x[214], outer_haar_y[214], x+88, y+8, 16, 71);
	HaarXtYt(outer_haar_x[215], outer_haar_y[215], x+112, y+8, 16, 71);
}

void Scarf::DescriptorResponsesGen9(int x, int y)
{
	ZeroOrientation();

	HaarXYO(center_haar_x[0], center_haar_y[0], x-9, y, 18, ori_weight[0]);
	HaarXYO(center_haar_x[1], center_haar_y[1], x, y+9, 18, ori_weight[0]);
	HaarXYO(center_haar_x[2], center_haar_y[2], x, y-9, 18, ori_weight[0]);
	HaarXYO(center_haar_x[3], center_haar_y[3], x+9, y, 18, ori_weight[0]);
	HaarXYO(center_haar_x[4], center_haar_y[4], x-18, y+9, 18, ori_weight[1]);
	HaarXYO(center_haar_x[5], center_haar_y[5], x-18, y-9, 18, ori_weight[1]);
	HaarXYO(center_haar_x[6], center_haar_y[6], x-9, y+18, 18, ori_weight[1]);
	HaarXYO(center_haar_x[7], center_haar_y[7], x-9, y-18, 18, ori_weight[1]);
	HaarXYO(center_haar_x[8], center_haar_y[8], x+9, y+18, 18, ori_weight[1]);
	HaarXYO(center_haar_x[9], center_haar_y[9], x+9, y-18, 18, ori_weight[1]);
	HaarXYO(center_haar_x[10], center_haar_y[10], x+18, y+9, 18, ori_weight[1]);
	HaarXYO(center_haar_x[11], center_haar_y[11], x+18, y-9, 18, ori_weight[1]);
	HaarXYO(center_haar_x[12], center_haar_y[12], x-27, y, 18, ori_weight[2]);
	HaarXYO(center_haar_x[13], center_haar_y[13], x, y+27, 18, ori_weight[2]);
	HaarXYO(center_haar_x[14], center_haar_y[14], x, y-27, 18, ori_weight[2]);
	HaarXYO(center_haar_x[15], center_haar_y[15], x+27, y, 18, ori_weight[2]);

	HaarXtYtO(inner_haar_x[0], inner_haar_y[0], x+36, y, 18, 0, ori_weight[5]);
	HaarXtYt(inner_haar_x[1], inner_haar_y[1], x+72, y, 18, 0);
	HaarXtYtO(inner_haar_x[2], inner_haar_y[2], x+45, y, 18, 1, ori_weight[9]);
	HaarXtYt(inner_haar_x[3], inner_haar_y[3], x+63, y-9, 18, 1);
	HaarXtYt(inner_haar_x[4], inner_haar_y[4], x+54, y-9, 18, 2);
	HaarXtYtO(inner_haar_x[5], inner_haar_y[5], x+45, y-9, 18, 2, ori_weight[10]);
	HaarXtYtO(inner_haar_x[6], inner_haar_y[6], x+36, y-9, 18, 3, ori_weight[6]);
	HaarXtYt(inner_haar_x[7], inner_haar_y[7], x+63, y-18, 18, 3);
	HaarXtYtO(inner_haar_x[8], inner_haar_y[8], x+27, y-9, 18, 4, ori_weight[3]);
	HaarXtYt(inner_haar_x[9], inner_haar_y[9], x+54, y-18, 18, 4);
	HaarXtYt(inner_haar_x[10], inner_haar_y[10], x+63, y-27, 18, 5);
	HaarXtYtO(inner_haar_x[11], inner_haar_y[11], x+36, y-18, 18, 5, ori_weight[8]);
	HaarXtYt(inner_haar_x[12], inner_haar_y[12], x+54, y-27, 18, 6);
	HaarXtYtO(inner_haar_x[13], inner_haar_y[13], x+45, y-27, 18, 6, ori_weight[11]);
	HaarXtYtO(inner_haar_x[14], inner_haar_y[14], x+27, y-18, 18, 7, ori_weight[4]);
	HaarXtYt(inner_haar_x[15], inner_haar_y[15], x+54, y-36, 18, 7);
	HaarXtYt(inner_haar_x[16], inner_haar_y[16], x+45, y-36, 18, 8);
	HaarXtYt(inner_haar_x[17], inner_haar_y[17], x+54, y-45, 18, 8);
	HaarXtYtO(inner_haar_x[18], inner_haar_y[18], x+27, y-27, 18, 9, ori_weight[7]);
	HaarXtYt(inner_haar_x[19], inner_haar_y[19], x+45, y-45, 18, 9);
	HaarXtYt(inner_haar_x[20], inner_haar_y[20], x+45, y-54, 18, 10);
	HaarXtYt(inner_haar_x[21], inner_haar_y[21], x+36, y-45, 18, 10);
	HaarXtYtO(inner_haar_x[22], inner_haar_y[22], x+18, y-27, 18, 11, ori_weight[4]);
	HaarXtYt(inner_haar_x[23], inner_haar_y[23], x+36, y-54, 18, 11);
	HaarXtYtO(inner_haar_x[24], inner_haar_y[24], x+27, y-45, 18, 12, ori_weight[11]);
	HaarXtYt(inner_haar_x[25], inner_haar_y[25], x+27, y-54, 18, 12);
	HaarXtYtO(inner_haar_x[26], inner_haar_y[26], x+18, y-36, 18, 13, ori_weight[8]);
	HaarXtYt(inner_haar_x[27], inner_haar_y[27], x+27, y-63, 18, 13);
	HaarXtYtO(inner_haar_x[28], inner_haar_y[28], x+9, y-27, 18, 14, ori_weight[3]);
	HaarXtYt(inner_haar_x[29], inner_haar_y[29], x+18, y-54, 18, 14);
	HaarXtYt(inner_haar_x[30], inner_haar_y[30], x+18, y-63, 18, 15);
	HaarXtYtO(inner_haar_x[31], inner_haar_y[31], x+9, y-36, 18, 15, ori_weight[6]);
	HaarXtYtO(inner_haar_x[32], inner_haar_y[32], x+9, y-45, 18, 16, ori_weight[10]);
	HaarXtYt(inner_haar_x[33], inner_haar_y[33], x+9, y-54, 18, 16);
	HaarXtYtO(inner_haar_x[34], inner_haar_y[34], x, y-45, 18, 17, ori_weight[9]);
	HaarXtYt(inner_haar_x[35], inner_haar_y[35], x+9, y-63, 18, 17);
	HaarXtYtO(inner_haar_x[36], inner_haar_y[36], x, y-36, 18, 18, ori_weight[5]);
	HaarXtYt(inner_haar_x[37], inner_haar_y[37], x, y-72, 18, 18);
	HaarXtYtO(inner_haar_x[38], inner_haar_y[38], x, y-54, 18, 19, ori_weight[12]);
	HaarXtYt(inner_haar_x[39], inner_haar_y[39], x-9, y-63, 18, 19);
	HaarXtYt(inner_haar_x[40], inner_haar_y[40], x-9, y-54, 18, 20);
	HaarXtYtO(inner_haar_x[41], inner_haar_y[41], x-9, y-45, 18, 20, ori_weight[10]);
	HaarXtYtO(inner_haar_x[42], inner_haar_y[42], x-9, y-36, 18, 21, ori_weight[6]);
	HaarXtYt(inner_haar_x[43], inner_haar_y[43], x-18, y-63, 18, 21);
	HaarXtYtO(inner_haar_x[44], inner_haar_y[44], x-9, y-27, 18, 22, ori_weight[3]);
	HaarXtYt(inner_haar_x[45], inner_haar_y[45], x-18, y-54, 18, 22);
	HaarXtYt(inner_haar_x[46], inner_haar_y[46], x-27, y-63, 18, 23);
	HaarXtYtO(inner_haar_x[47], inner_haar_y[47], x-18, y-36, 18, 23, ori_weight[8]);
	HaarXtYt(inner_haar_x[48], inner_haar_y[48], x-27, y-54, 18, 24);
	HaarXtYtO(inner_haar_x[49], inner_haar_y[49], x-27, y-45, 18, 24, ori_weight[11]);
	HaarXtYtO(inner_haar_x[50], inner_haar_y[50], x-18, y-27, 18, 25, ori_weight[4]);
	HaarXtYt(inner_haar_x[51], inner_haar_y[51], x-36, y-54, 18, 25);
	HaarXtYt(inner_haar_x[52], inner_haar_y[52], x-36, y-45, 18, 26);
	HaarXtYt(inner_haar_x[53], inner_haar_y[53], x-45, y-54, 18, 26);
	HaarXtYtO(inner_haar_x[54], inner_haar_y[54], x-27, y-27, 18, 27, ori_weight[7]);
	HaarXtYt(inner_haar_x[55], inner_haar_y[55], x-45, y-45, 18, 27);
	HaarXtYt(inner_haar_x[56], inner_haar_y[56], x-54, y-45, 18, 28);
	HaarXtYt(inner_haar_x[57], inner_haar_y[57], x-45, y-36, 18, 28);
	HaarXtYtO(inner_haar_x[58], inner_haar_y[58], x-27, y-18, 18, 29, ori_weight[4]);
	HaarXtYt(inner_haar_x[59], inner_haar_y[59], x-54, y-36, 18, 29);
	HaarXtYtO(inner_haar_x[60], inner_haar_y[60], x-45, y-27, 18, 30, ori_weight[11]);
	HaarXtYt(inner_haar_x[61], inner_haar_y[61], x-54, y-27, 18, 30);
	HaarXtYtO(inner_haar_x[62], inner_haar_y[62], x-36, y-18, 18, 31, ori_weight[8]);
	HaarXtYt(inner_haar_x[63], inner_haar_y[63], x-63, y-27, 18, 31);
	HaarXtYtO(inner_haar_x[64], inner_haar_y[64], x-27, y-9, 18, 32, ori_weight[3]);
	HaarXtYt(inner_haar_x[65], inner_haar_y[65], x-54, y-18, 18, 32);
	HaarXtYt(inner_haar_x[66], inner_haar_y[66], x-63, y-18, 18, 33);
	HaarXtYtO(inner_haar_x[67], inner_haar_y[67], x-36, y-9, 18, 33, ori_weight[6]);
	HaarXtYtO(inner_haar_x[68], inner_haar_y[68], x-45, y-9, 18, 34, ori_weight[10]);
	HaarXtYt(inner_haar_x[69], inner_haar_y[69], x-54, y-9, 18, 34);
	HaarXtYtO(inner_haar_x[70], inner_haar_y[70], x-45, y, 18, 35, ori_weight[9]);
	HaarXtYt(inner_haar_x[71], inner_haar_y[71], x-63, y-9, 18, 35);
	HaarXtYtO(inner_haar_x[72], inner_haar_y[72], x-36, y, 18, 36, ori_weight[5]);
	HaarXtYt(inner_haar_x[73], inner_haar_y[73], x-72, y, 18, 36);
	HaarXtYtO(inner_haar_x[74], inner_haar_y[74], x-54, y, 18, 37, ori_weight[12]);
	HaarXtYt(inner_haar_x[75], inner_haar_y[75], x-63, y+9, 18, 37);
	HaarXtYt(inner_haar_x[76], inner_haar_y[76], x-54, y+9, 18, 38);
	HaarXtYtO(inner_haar_x[77], inner_haar_y[77], x-45, y+9, 18, 38, ori_weight[10]);
	HaarXtYtO(inner_haar_x[78], inner_haar_y[78], x-36, y+9, 18, 39, ori_weight[6]);
	HaarXtYt(inner_haar_x[79], inner_haar_y[79], x-63, y+18, 18, 39);
	HaarXtYtO(inner_haar_x[80], inner_haar_y[80], x-27, y+9, 18, 40, ori_weight[3]);
	HaarXtYt(inner_haar_x[81], inner_haar_y[81], x-54, y+18, 18, 40);
	HaarXtYt(inner_haar_x[82], inner_haar_y[82], x-63, y+27, 18, 41);
	HaarXtYtO(inner_haar_x[83], inner_haar_y[83], x-36, y+18, 18, 41, ori_weight[8]);
	HaarXtYt(inner_haar_x[84], inner_haar_y[84], x-54, y+27, 18, 42);
	HaarXtYtO(inner_haar_x[85], inner_haar_y[85], x-45, y+27, 18, 42, ori_weight[11]);
	HaarXtYtO(inner_haar_x[86], inner_haar_y[86], x-27, y+18, 18, 43, ori_weight[4]);
	HaarXtYt(inner_haar_x[87], inner_haar_y[87], x-54, y+36, 18, 43);
	HaarXtYt(inner_haar_x[88], inner_haar_y[88], x-45, y+36, 18, 44);
	HaarXtYt(inner_haar_x[89], inner_haar_y[89], x-54, y+45, 18, 44);
	HaarXtYtO(inner_haar_x[90], inner_haar_y[90], x-27, y+27, 18, 45, ori_weight[7]);
	HaarXtYt(inner_haar_x[91], inner_haar_y[91], x-45, y+45, 18, 45);
	HaarXtYt(inner_haar_x[92], inner_haar_y[92], x-45, y+54, 18, 46);
	HaarXtYt(inner_haar_x[93], inner_haar_y[93], x-36, y+45, 18, 46);
	HaarXtYtO(inner_haar_x[94], inner_haar_y[94], x-18, y+27, 18, 47, ori_weight[4]);
	HaarXtYt(inner_haar_x[95], inner_haar_y[95], x-36, y+54, 18, 47);
	HaarXtYtO(inner_haar_x[96], inner_haar_y[96], x-27, y+45, 18, 48, ori_weight[11]);
	HaarXtYt(inner_haar_x[97], inner_haar_y[97], x-27, y+54, 18, 48);
	HaarXtYtO(inner_haar_x[98], inner_haar_y[98], x-18, y+36, 18, 49, ori_weight[8]);
	HaarXtYt(inner_haar_x[99], inner_haar_y[99], x-27, y+63, 18, 49);
	HaarXtYtO(inner_haar_x[100], inner_haar_y[100], x-9, y+27, 18, 50, ori_weight[3]);
	HaarXtYt(inner_haar_x[101], inner_haar_y[101], x-18, y+54, 18, 50);
	HaarXtYt(inner_haar_x[102], inner_haar_y[102], x-18, y+63, 18, 51);
	HaarXtYtO(inner_haar_x[103], inner_haar_y[103], x-9, y+36, 18, 51, ori_weight[6]);
	HaarXtYtO(inner_haar_x[104], inner_haar_y[104], x-9, y+45, 18, 52, ori_weight[10]);
	HaarXtYt(inner_haar_x[105], inner_haar_y[105], x-9, y+54, 18, 52);
	HaarXtYtO(inner_haar_x[106], inner_haar_y[106], x, y+45, 18, 53, ori_weight[9]);
	HaarXtYt(inner_haar_x[107], inner_haar_y[107], x-9, y+63, 18, 53);
	HaarXtYtO(inner_haar_x[108], inner_haar_y[108], x, y+36, 18, 54, ori_weight[5]);
	HaarXtYt(inner_haar_x[109], inner_haar_y[109], x, y+72, 18, 54);
	HaarXtYtO(inner_haar_x[110], inner_haar_y[110], x, y+54, 18, 55, ori_weight[12]);
	HaarXtYt(inner_haar_x[111], inner_haar_y[111], x+9, y+63, 18, 55);
	HaarXtYt(inner_haar_x[112], inner_haar_y[112], x+9, y+54, 18, 56);
	HaarXtYtO(inner_haar_x[113], inner_haar_y[113], x+9, y+45, 18, 56, ori_weight[10]);
	HaarXtYtO(inner_haar_x[114], inner_haar_y[114], x+9, y+36, 18, 57, ori_weight[6]);
	HaarXtYt(inner_haar_x[115], inner_haar_y[115], x+18, y+63, 18, 57);
	HaarXtYtO(inner_haar_x[116], inner_haar_y[116], x+9, y+27, 18, 58, ori_weight[3]);
	HaarXtYt(inner_haar_x[117], inner_haar_y[117], x+18, y+54, 18, 58);
	HaarXtYt(inner_haar_x[118], inner_haar_y[118], x+27, y+63, 18, 59);
	HaarXtYtO(inner_haar_x[119], inner_haar_y[119], x+18, y+36, 18, 59, ori_weight[8]);
	HaarXtYt(inner_haar_x[120], inner_haar_y[120], x+27, y+54, 18, 60);
	HaarXtYtO(inner_haar_x[121], inner_haar_y[121], x+27, y+45, 18, 60, ori_weight[11]);
	HaarXtYtO(inner_haar_x[122], inner_haar_y[122], x+18, y+27, 18, 61, ori_weight[4]);
	HaarXtYt(inner_haar_x[123], inner_haar_y[123], x+36, y+54, 18, 61);
	HaarXtYt(inner_haar_x[124], inner_haar_y[124], x+36, y+45, 18, 62);
	HaarXtYt(inner_haar_x[125], inner_haar_y[125], x+45, y+54, 18, 62);
	HaarXtYtO(inner_haar_x[126], inner_haar_y[126], x+27, y+27, 18, 63, ori_weight[7]);
	HaarXtYt(inner_haar_x[127], inner_haar_y[127], x+45, y+45, 18, 63);
	HaarXtYt(inner_haar_x[128], inner_haar_y[128], x+54, y+45, 18, 64);
	HaarXtYt(inner_haar_x[129], inner_haar_y[129], x+45, y+36, 18, 64);
	HaarXtYtO(inner_haar_x[130], inner_haar_y[130], x+27, y+18, 18, 65, ori_weight[4]);
	HaarXtYt(inner_haar_x[131], inner_haar_y[131], x+54, y+36, 18, 65);
	HaarXtYtO(inner_haar_x[132], inner_haar_y[132], x+45, y+27, 18, 66, ori_weight[11]);
	HaarXtYt(inner_haar_x[133], inner_haar_y[133], x+54, y+27, 18, 66);
	HaarXtYtO(inner_haar_x[134], inner_haar_y[134], x+36, y+18, 18, 67, ori_weight[8]);
	HaarXtYt(inner_haar_x[135], inner_haar_y[135], x+63, y+27, 18, 67);
	HaarXtYtO(inner_haar_x[136], inner_haar_y[136], x+27, y+9, 18, 68, ori_weight[3]);
	HaarXtYt(inner_haar_x[137], inner_haar_y[137], x+54, y+18, 18, 68);
	HaarXtYt(inner_haar_x[138], inner_haar_y[138], x+63, y+18, 18, 69);
	HaarXtYtO(inner_haar_x[139], inner_haar_y[139], x+36, y+9, 18, 69, ori_weight[6]);
	HaarXtYtO(inner_haar_x[140], inner_haar_y[140], x+45, y+9, 18, 70, ori_weight[10]);
	HaarXtYt(inner_haar_x[141], inner_haar_y[141], x+54, y+9, 18, 70);
	HaarXtYtO(inner_haar_x[142], inner_haar_y[142], x+54, y, 18, 71, ori_weight[12]);
	HaarXtYt(inner_haar_x[143], inner_haar_y[143], x+63, y+9, 18, 71);

	HaarXtYt(outer_haar_x[0], outer_haar_y[0], x+81, y, 18, 0);
	HaarXtYt(outer_haar_x[1], outer_haar_y[1], x+108, y, 18, 0);
	HaarXtYt(outer_haar_x[2], outer_haar_y[2], x+135, y, 18, 0);
	HaarXtYt(outer_haar_x[3], outer_haar_y[3], x+126, y-9, 18, 1);
	HaarXtYt(outer_haar_x[4], outer_haar_y[4], x+99, y-9, 18, 1);
	HaarXtYt(outer_haar_x[5], outer_haar_y[5], x+72, y-9, 18, 1);
	HaarXtYt(outer_haar_x[6], outer_haar_y[6], x+108, y-18, 18, 2);
	HaarXtYt(outer_haar_x[7], outer_haar_y[7], x+90, y-18, 18, 2);
	HaarXtYt(outer_haar_x[8], outer_haar_y[8], x+126, y-27, 18, 2);
	HaarXtYt(outer_haar_x[9], outer_haar_y[9], x+72, y-18, 18, 3);
	HaarXtYt(outer_haar_x[10], outer_haar_y[10], x+99, y-27, 18, 3);
	HaarXtYt(outer_haar_x[11], outer_haar_y[11], x+126, y-36, 18, 3);
	HaarXtYt(outer_haar_x[12], outer_haar_y[12], x+126, y-45, 18, 4);
	HaarXtYt(outer_haar_x[13], outer_haar_y[13], x+99, y-36, 18, 4);
	HaarXtYt(outer_haar_x[14], outer_haar_y[14], x+72, y-27, 18, 4);
	HaarXtYt(outer_haar_x[15], outer_haar_y[15], x+117, y-54, 18, 5);
	HaarXtYt(outer_haar_x[16], outer_haar_y[16], x+72, y-36, 18, 5);
	HaarXtYt(outer_haar_x[17], outer_haar_y[17], x+90, y-45, 18, 5);
	HaarXtYt(outer_haar_x[18], outer_haar_y[18], x+117, y-63, 18, 6);
	HaarXtYt(outer_haar_x[19], outer_haar_y[19], x+63, y-36, 18, 6);
	HaarXtYt(outer_haar_x[20], outer_haar_y[20], x+90, y-54, 18, 6);
	HaarXtYt(outer_haar_x[21], outer_haar_y[21], x+90, y-63, 18, 7);
	HaarXtYt(outer_haar_x[22], outer_haar_y[22], x+63, y-45, 18, 7);
	HaarXtYt(outer_haar_x[23], outer_haar_y[23], x+108, y-81, 18, 7);
	HaarXtYt(outer_haar_x[24], outer_haar_y[24], x+63, y-54, 18, 8);
	HaarXtYt(outer_haar_x[25], outer_haar_y[25], x+81, y-72, 18, 8);
	HaarXtYt(outer_haar_x[26], outer_haar_y[26], x+99, y-90, 18, 8);
	HaarXtYt(outer_haar_x[27], outer_haar_y[27], x+54, y-54, 18, 9);
	HaarXtYt(outer_haar_x[28], outer_haar_y[28], x+72, y-72, 18, 9);
	HaarXtYt(outer_haar_x[29], outer_haar_y[29], x+90, y-90, 18, 9);
	HaarXtYt(outer_haar_x[30], outer_haar_y[30], x+90, y-99, 18, 10);
	HaarXtYt(outer_haar_x[31], outer_haar_y[31], x+72, y-81, 18, 10);
	HaarXtYt(outer_haar_x[32], outer_haar_y[32], x+54, y-63, 18, 10);
	HaarXtYt(outer_haar_x[33], outer_haar_y[33], x+81, y-108, 18, 11);
	HaarXtYt(outer_haar_x[34], outer_haar_y[34], x+45, y-63, 18, 11);
	HaarXtYt(outer_haar_x[35], outer_haar_y[35], x+63, y-90, 18, 11);
	HaarXtYt(outer_haar_x[36], outer_haar_y[36], x+54, y-90, 18, 12);
	HaarXtYt(outer_haar_x[37], outer_haar_y[37], x+36, y-63, 18, 12);
	HaarXtYt(outer_haar_x[38], outer_haar_y[38], x+63, y-117, 18, 12);
	HaarXtYt(outer_haar_x[39], outer_haar_y[39], x+36, y-72, 18, 13);
	HaarXtYt(outer_haar_x[40], outer_haar_y[40], x+45, y-90, 18, 13);
	HaarXtYt(outer_haar_x[41], outer_haar_y[41], x+54, y-117, 18, 13);
	HaarXtYt(outer_haar_x[42], outer_haar_y[42], x+27, y-72, 18, 14);
	HaarXtYt(outer_haar_x[43], outer_haar_y[43], x+36, y-99, 18, 14);
	HaarXtYt(outer_haar_x[44], outer_haar_y[44], x+45, y-126, 18, 14);
	HaarXtYt(outer_haar_x[45], outer_haar_y[45], x+36, y-126, 18, 15);
	HaarXtYt(outer_haar_x[46], outer_haar_y[46], x+27, y-99, 18, 15);
	HaarXtYt(outer_haar_x[47], outer_haar_y[47], x+18, y-72, 18, 15);
	HaarXtYt(outer_haar_x[48], outer_haar_y[48], x+27, y-126, 18, 16);
	HaarXtYt(outer_haar_x[49], outer_haar_y[49], x+18, y-90, 18, 16);
	HaarXtYt(outer_haar_x[50], outer_haar_y[50], x+18, y-108, 18, 16);
	HaarXtYt(outer_haar_x[51], outer_haar_y[51], x+9, y-72, 18, 17);
	HaarXtYt(outer_haar_x[52], outer_haar_y[52], x+9, y-99, 18, 17);
	HaarXtYt(outer_haar_x[53], outer_haar_y[53], x+9, y-126, 18, 17);
	HaarXtYt(outer_haar_x[54], outer_haar_y[54], x, y-81, 18, 18);
	HaarXtYt(outer_haar_x[55], outer_haar_y[55], x, y-108, 18, 18);
	HaarXtYt(outer_haar_x[56], outer_haar_y[56], x, y-135, 18, 18);
	HaarXtYt(outer_haar_x[57], outer_haar_y[57], x-9, y-126, 18, 19);
	HaarXtYt(outer_haar_x[58], outer_haar_y[58], x-9, y-99, 18, 19);
	HaarXtYt(outer_haar_x[59], outer_haar_y[59], x-9, y-72, 18, 19);
	HaarXtYt(outer_haar_x[60], outer_haar_y[60], x-18, y-108, 18, 20);
	HaarXtYt(outer_haar_x[61], outer_haar_y[61], x-18, y-90, 18, 20);
	HaarXtYt(outer_haar_x[62], outer_haar_y[62], x-27, y-126, 18, 20);
	HaarXtYt(outer_haar_x[63], outer_haar_y[63], x-18, y-72, 18, 21);
	HaarXtYt(outer_haar_x[64], outer_haar_y[64], x-27, y-99, 18, 21);
	HaarXtYt(outer_haar_x[65], outer_haar_y[65], x-36, y-126, 18, 21);
	HaarXtYt(outer_haar_x[66], outer_haar_y[66], x-45, y-126, 18, 22);
	HaarXtYt(outer_haar_x[67], outer_haar_y[67], x-36, y-99, 18, 22);
	HaarXtYt(outer_haar_x[68], outer_haar_y[68], x-27, y-72, 18, 22);
	HaarXtYt(outer_haar_x[69], outer_haar_y[69], x-54, y-117, 18, 23);
	HaarXtYt(outer_haar_x[70], outer_haar_y[70], x-36, y-72, 18, 23);
	HaarXtYt(outer_haar_x[71], outer_haar_y[71], x-45, y-90, 18, 23);
	HaarXtYt(outer_haar_x[72], outer_haar_y[72], x-63, y-117, 18, 24);
	HaarXtYt(outer_haar_x[73], outer_haar_y[73], x-36, y-63, 18, 24);
	HaarXtYt(outer_haar_x[74], outer_haar_y[74], x-54, y-90, 18, 24);
	HaarXtYt(outer_haar_x[75], outer_haar_y[75], x-63, y-90, 18, 25);
	HaarXtYt(outer_haar_x[76], outer_haar_y[76], x-45, y-63, 18, 25);
	HaarXtYt(outer_haar_x[77], outer_haar_y[77], x-81, y-108, 18, 25);
	HaarXtYt(outer_haar_x[78], outer_haar_y[78], x-54, y-63, 18, 26);
	HaarXtYt(outer_haar_x[79], outer_haar_y[79], x-72, y-81, 18, 26);
	HaarXtYt(outer_haar_x[80], outer_haar_y[80], x-90, y-99, 18, 26);
	HaarXtYt(outer_haar_x[81], outer_haar_y[81], x-54, y-54, 18, 27);
	HaarXtYt(outer_haar_x[82], outer_haar_y[82], x-72, y-72, 18, 27);
	HaarXtYt(outer_haar_x[83], outer_haar_y[83], x-90, y-90, 18, 27);
	HaarXtYt(outer_haar_x[84], outer_haar_y[84], x-99, y-90, 18, 28);
	HaarXtYt(outer_haar_x[85], outer_haar_y[85], x-81, y-72, 18, 28);
	HaarXtYt(outer_haar_x[86], outer_haar_y[86], x-63, y-54, 18, 28);
	HaarXtYt(outer_haar_x[87], outer_haar_y[87], x-108, y-81, 18, 29);
	HaarXtYt(outer_haar_x[88], outer_haar_y[88], x-63, y-45, 18, 29);
	HaarXtYt(outer_haar_x[89], outer_haar_y[89], x-90, y-63, 18, 29);
	HaarXtYt(outer_haar_x[90], outer_haar_y[90], x-90, y-54, 18, 30);
	HaarXtYt(outer_haar_x[91], outer_haar_y[91], x-63, y-36, 18, 30);
	HaarXtYt(outer_haar_x[92], outer_haar_y[92], x-117, y-63, 18, 30);
	HaarXtYt(outer_haar_x[93], outer_haar_y[93], x-72, y-36, 18, 31);
	HaarXtYt(outer_haar_x[94], outer_haar_y[94], x-90, y-45, 18, 31);
	HaarXtYt(outer_haar_x[95], outer_haar_y[95], x-117, y-54, 18, 31);
	HaarXtYt(outer_haar_x[96], outer_haar_y[96], x-72, y-27, 18, 32);
	HaarXtYt(outer_haar_x[97], outer_haar_y[97], x-99, y-36, 18, 32);
	HaarXtYt(outer_haar_x[98], outer_haar_y[98], x-126, y-45, 18, 32);
	HaarXtYt(outer_haar_x[99], outer_haar_y[99], x-126, y-36, 18, 33);
	HaarXtYt(outer_haar_x[100], outer_haar_y[100], x-99, y-27, 18, 33);
	HaarXtYt(outer_haar_x[101], outer_haar_y[101], x-72, y-18, 18, 33);
	HaarXtYt(outer_haar_x[102], outer_haar_y[102], x-126, y-27, 18, 34);
	HaarXtYt(outer_haar_x[103], outer_haar_y[103], x-90, y-18, 18, 34);
	HaarXtYt(outer_haar_x[104], outer_haar_y[104], x-108, y-18, 18, 34);
	HaarXtYt(outer_haar_x[105], outer_haar_y[105], x-72, y-9, 18, 35);
	HaarXtYt(outer_haar_x[106], outer_haar_y[106], x-99, y-9, 18, 35);
	HaarXtYt(outer_haar_x[107], outer_haar_y[107], x-126, y-9, 18, 35);
	HaarXtYt(outer_haar_x[108], outer_haar_y[108], x-81, y, 18, 36);
	HaarXtYt(outer_haar_x[109], outer_haar_y[109], x-108, y, 18, 36);
	HaarXtYt(outer_haar_x[110], outer_haar_y[110], x-135, y, 18, 36);
	HaarXtYt(outer_haar_x[111], outer_haar_y[111], x-126, y+9, 18, 37);
	HaarXtYt(outer_haar_x[112], outer_haar_y[112], x-99, y+9, 18, 37);
	HaarXtYt(outer_haar_x[113], outer_haar_y[113], x-72, y+9, 18, 37);
	HaarXtYt(outer_haar_x[114], outer_haar_y[114], x-108, y+18, 18, 38);
	HaarXtYt(outer_haar_x[115], outer_haar_y[115], x-90, y+18, 18, 38);
	HaarXtYt(outer_haar_x[116], outer_haar_y[116], x-126, y+27, 18, 38);
	HaarXtYt(outer_haar_x[117], outer_haar_y[117], x-72, y+18, 18, 39);
	HaarXtYt(outer_haar_x[118], outer_haar_y[118], x-99, y+27, 18, 39);
	HaarXtYt(outer_haar_x[119], outer_haar_y[119], x-126, y+36, 18, 39);
	HaarXtYt(outer_haar_x[120], outer_haar_y[120], x-126, y+45, 18, 40);
	HaarXtYt(outer_haar_x[121], outer_haar_y[121], x-99, y+36, 18, 40);
	HaarXtYt(outer_haar_x[122], outer_haar_y[122], x-72, y+27, 18, 40);
	HaarXtYt(outer_haar_x[123], outer_haar_y[123], x-117, y+54, 18, 41);
	HaarXtYt(outer_haar_x[124], outer_haar_y[124], x-72, y+36, 18, 41);
	HaarXtYt(outer_haar_x[125], outer_haar_y[125], x-90, y+45, 18, 41);
	HaarXtYt(outer_haar_x[126], outer_haar_y[126], x-117, y+63, 18, 42);
	HaarXtYt(outer_haar_x[127], outer_haar_y[127], x-63, y+36, 18, 42);
	HaarXtYt(outer_haar_x[128], outer_haar_y[128], x-90, y+54, 18, 42);
	HaarXtYt(outer_haar_x[129], outer_haar_y[129], x-90, y+63, 18, 43);
	HaarXtYt(outer_haar_x[130], outer_haar_y[130], x-63, y+45, 18, 43);
	HaarXtYt(outer_haar_x[131], outer_haar_y[131], x-108, y+81, 18, 43);
	HaarXtYt(outer_haar_x[132], outer_haar_y[132], x-63, y+54, 18, 44);
	HaarXtYt(outer_haar_x[133], outer_haar_y[133], x-81, y+72, 18, 44);
	HaarXtYt(outer_haar_x[134], outer_haar_y[134], x-99, y+90, 18, 44);
	HaarXtYt(outer_haar_x[135], outer_haar_y[135], x-54, y+54, 18, 45);
	HaarXtYt(outer_haar_x[136], outer_haar_y[136], x-72, y+72, 18, 45);
	HaarXtYt(outer_haar_x[137], outer_haar_y[137], x-90, y+90, 18, 45);
	HaarXtYt(outer_haar_x[138], outer_haar_y[138], x-90, y+99, 18, 46);
	HaarXtYt(outer_haar_x[139], outer_haar_y[139], x-72, y+81, 18, 46);
	HaarXtYt(outer_haar_x[140], outer_haar_y[140], x-54, y+63, 18, 46);
	HaarXtYt(outer_haar_x[141], outer_haar_y[141], x-81, y+108, 18, 47);
	HaarXtYt(outer_haar_x[142], outer_haar_y[142], x-45, y+63, 18, 47);
	HaarXtYt(outer_haar_x[143], outer_haar_y[143], x-63, y+90, 18, 47);
	HaarXtYt(outer_haar_x[144], outer_haar_y[144], x-54, y+90, 18, 48);
	HaarXtYt(outer_haar_x[145], outer_haar_y[145], x-36, y+63, 18, 48);
	HaarXtYt(outer_haar_x[146], outer_haar_y[146], x-63, y+117, 18, 48);
	HaarXtYt(outer_haar_x[147], outer_haar_y[147], x-36, y+72, 18, 49);
	HaarXtYt(outer_haar_x[148], outer_haar_y[148], x-45, y+90, 18, 49);
	HaarXtYt(outer_haar_x[149], outer_haar_y[149], x-54, y+117, 18, 49);
	HaarXtYt(outer_haar_x[150], outer_haar_y[150], x-27, y+72, 18, 50);
	HaarXtYt(outer_haar_x[151], outer_haar_y[151], x-36, y+99, 18, 50);
	HaarXtYt(outer_haar_x[152], outer_haar_y[152], x-45, y+126, 18, 50);
	HaarXtYt(outer_haar_x[153], outer_haar_y[153], x-36, y+126, 18, 51);
	HaarXtYt(outer_haar_x[154], outer_haar_y[154], x-27, y+99, 18, 51);
	HaarXtYt(outer_haar_x[155], outer_haar_y[155], x-18, y+72, 18, 51);
	HaarXtYt(outer_haar_x[156], outer_haar_y[156], x-27, y+126, 18, 52);
	HaarXtYt(outer_haar_x[157], outer_haar_y[157], x-18, y+90, 18, 52);
	HaarXtYt(outer_haar_x[158], outer_haar_y[158], x-18, y+108, 18, 52);
	HaarXtYt(outer_haar_x[159], outer_haar_y[159], x-9, y+72, 18, 53);
	HaarXtYt(outer_haar_x[160], outer_haar_y[160], x-9, y+99, 18, 53);
	HaarXtYt(outer_haar_x[161], outer_haar_y[161], x-9, y+126, 18, 53);
	HaarXtYt(outer_haar_x[162], outer_haar_y[162], x, y+81, 18, 54);
	HaarXtYt(outer_haar_x[163], outer_haar_y[163], x, y+108, 18, 54);
	HaarXtYt(outer_haar_x[164], outer_haar_y[164], x, y+135, 18, 54);
	HaarXtYt(outer_haar_x[165], outer_haar_y[165], x+9, y+126, 18, 55);
	HaarXtYt(outer_haar_x[166], outer_haar_y[166], x+9, y+99, 18, 55);
	HaarXtYt(outer_haar_x[167], outer_haar_y[167], x+9, y+72, 18, 55);
	HaarXtYt(outer_haar_x[168], outer_haar_y[168], x+18, y+108, 18, 56);
	HaarXtYt(outer_haar_x[169], outer_haar_y[169], x+18, y+90, 18, 56);
	HaarXtYt(outer_haar_x[170], outer_haar_y[170], x+27, y+126, 18, 56);
	HaarXtYt(outer_haar_x[171], outer_haar_y[171], x+18, y+72, 18, 57);
	HaarXtYt(outer_haar_x[172], outer_haar_y[172], x+27, y+99, 18, 57);
	HaarXtYt(outer_haar_x[173], outer_haar_y[173], x+36, y+126, 18, 57);
	HaarXtYt(outer_haar_x[174], outer_haar_y[174], x+45, y+126, 18, 58);
	HaarXtYt(outer_haar_x[175], outer_haar_y[175], x+36, y+99, 18, 58);
	HaarXtYt(outer_haar_x[176], outer_haar_y[176], x+27, y+72, 18, 58);
	HaarXtYt(outer_haar_x[177], outer_haar_y[177], x+54, y+117, 18, 59);
	HaarXtYt(outer_haar_x[178], outer_haar_y[178], x+36, y+72, 18, 59);
	HaarXtYt(outer_haar_x[179], outer_haar_y[179], x+45, y+90, 18, 59);
	HaarXtYt(outer_haar_x[180], outer_haar_y[180], x+63, y+117, 18, 60);
	HaarXtYt(outer_haar_x[181], outer_haar_y[181], x+36, y+63, 18, 60);
	HaarXtYt(outer_haar_x[182], outer_haar_y[182], x+54, y+90, 18, 60);
	HaarXtYt(outer_haar_x[183], outer_haar_y[183], x+63, y+90, 18, 61);
	HaarXtYt(outer_haar_x[184], outer_haar_y[184], x+45, y+63, 18, 61);
	HaarXtYt(outer_haar_x[185], outer_haar_y[185], x+81, y+108, 18, 61);
	HaarXtYt(outer_haar_x[186], outer_haar_y[186], x+54, y+63, 18, 62);
	HaarXtYt(outer_haar_x[187], outer_haar_y[187], x+72, y+81, 18, 62);
	HaarXtYt(outer_haar_x[188], outer_haar_y[188], x+90, y+99, 18, 62);
	HaarXtYt(outer_haar_x[189], outer_haar_y[189], x+54, y+54, 18, 63);
	HaarXtYt(outer_haar_x[190], outer_haar_y[190], x+72, y+72, 18, 63);
	HaarXtYt(outer_haar_x[191], outer_haar_y[191], x+90, y+90, 18, 63);
	HaarXtYt(outer_haar_x[192], outer_haar_y[192], x+99, y+90, 18, 64);
	HaarXtYt(outer_haar_x[193], outer_haar_y[193], x+81, y+72, 18, 64);
	HaarXtYt(outer_haar_x[194], outer_haar_y[194], x+63, y+54, 18, 64);
	HaarXtYt(outer_haar_x[195], outer_haar_y[195], x+108, y+81, 18, 65);
	HaarXtYt(outer_haar_x[196], outer_haar_y[196], x+63, y+45, 18, 65);
	HaarXtYt(outer_haar_x[197], outer_haar_y[197], x+90, y+63, 18, 65);
	HaarXtYt(outer_haar_x[198], outer_haar_y[198], x+90, y+54, 18, 66);
	HaarXtYt(outer_haar_x[199], outer_haar_y[199], x+63, y+36, 18, 66);
	HaarXtYt(outer_haar_x[200], outer_haar_y[200], x+117, y+63, 18, 66);
	HaarXtYt(outer_haar_x[201], outer_haar_y[201], x+72, y+36, 18, 67);
	HaarXtYt(outer_haar_x[202], outer_haar_y[202], x+90, y+45, 18, 67);
	HaarXtYt(outer_haar_x[203], outer_haar_y[203], x+117, y+54, 18, 67);
	HaarXtYt(outer_haar_x[204], outer_haar_y[204], x+72, y+27, 18, 68);
	HaarXtYt(outer_haar_x[205], outer_haar_y[205], x+99, y+36, 18, 68);
	HaarXtYt(outer_haar_x[206], outer_haar_y[206], x+126, y+45, 18, 68);
	HaarXtYt(outer_haar_x[207], outer_haar_y[207], x+126, y+36, 18, 69);
	HaarXtYt(outer_haar_x[208], outer_haar_y[208], x+99, y+27, 18, 69);
	HaarXtYt(outer_haar_x[209], outer_haar_y[209], x+72, y+18, 18, 69);
	HaarXtYt(outer_haar_x[210], outer_haar_y[210], x+126, y+27, 18, 70);
	HaarXtYt(outer_haar_x[211], outer_haar_y[211], x+90, y+18, 18, 70);
	HaarXtYt(outer_haar_x[212], outer_haar_y[212], x+108, y+18, 18, 70);
	HaarXtYt(outer_haar_x[213], outer_haar_y[213], x+72, y+9, 18, 71);
	HaarXtYt(outer_haar_x[214], outer_haar_y[214], x+99, y+9, 18, 71);
	HaarXtYt(outer_haar_x[215], outer_haar_y[215], x+126, y+9, 18, 71);
}

void Scarf::DescriptorResponsesGen10(int x, int y)
{
	ZeroOrientation();

	HaarXYO(center_haar_x[0], center_haar_y[0], x-10, y, 20, ori_weight[0]);
	HaarXYO(center_haar_x[1], center_haar_y[1], x, y+10, 20, ori_weight[0]);
	HaarXYO(center_haar_x[2], center_haar_y[2], x, y-10, 20, ori_weight[0]);
	HaarXYO(center_haar_x[3], center_haar_y[3], x+10, y, 20, ori_weight[0]);
	HaarXYO(center_haar_x[4], center_haar_y[4], x-20, y+10, 20, ori_weight[1]);
	HaarXYO(center_haar_x[5], center_haar_y[5], x-20, y-10, 20, ori_weight[1]);
	HaarXYO(center_haar_x[6], center_haar_y[6], x-10, y+20, 20, ori_weight[1]);
	HaarXYO(center_haar_x[7], center_haar_y[7], x-10, y-20, 20, ori_weight[1]);
	HaarXYO(center_haar_x[8], center_haar_y[8], x+10, y+20, 20, ori_weight[1]);
	HaarXYO(center_haar_x[9], center_haar_y[9], x+10, y-20, 20, ori_weight[1]);
	HaarXYO(center_haar_x[10], center_haar_y[10], x+20, y+10, 20, ori_weight[1]);
	HaarXYO(center_haar_x[11], center_haar_y[11], x+20, y-10, 20, ori_weight[1]);
	HaarXYO(center_haar_x[12], center_haar_y[12], x-30, y, 20, ori_weight[2]);
	HaarXYO(center_haar_x[13], center_haar_y[13], x, y+30, 20, ori_weight[2]);
	HaarXYO(center_haar_x[14], center_haar_y[14], x, y-30, 20, ori_weight[2]);
	HaarXYO(center_haar_x[15], center_haar_y[15], x+30, y, 20, ori_weight[2]);

	HaarXtYtO(inner_haar_x[0], inner_haar_y[0], x+40, y, 20, 0, ori_weight[5]);
	HaarXtYt(inner_haar_x[1], inner_haar_y[1], x+80, y, 20, 0);
	HaarXtYtO(inner_haar_x[2], inner_haar_y[2], x+50, y, 20, 1, ori_weight[9]);
	HaarXtYt(inner_haar_x[3], inner_haar_y[3], x+70, y-10, 20, 1);
	HaarXtYt(inner_haar_x[4], inner_haar_y[4], x+60, y-10, 20, 2);
	HaarXtYtO(inner_haar_x[5], inner_haar_y[5], x+50, y-10, 20, 2, ori_weight[10]);
	HaarXtYtO(inner_haar_x[6], inner_haar_y[6], x+40, y-10, 20, 3, ori_weight[6]);
	HaarXtYt(inner_haar_x[7], inner_haar_y[7], x+70, y-20, 20, 3);
	HaarXtYtO(inner_haar_x[8], inner_haar_y[8], x+30, y-10, 20, 4, ori_weight[3]);
	HaarXtYt(inner_haar_x[9], inner_haar_y[9], x+60, y-20, 20, 4);
	HaarXtYt(inner_haar_x[10], inner_haar_y[10], x+70, y-30, 20, 5);
	HaarXtYtO(inner_haar_x[11], inner_haar_y[11], x+40, y-20, 20, 5, ori_weight[8]);
	HaarXtYt(inner_haar_x[12], inner_haar_y[12], x+60, y-30, 20, 6);
	HaarXtYtO(inner_haar_x[13], inner_haar_y[13], x+50, y-30, 20, 6, ori_weight[11]);
	HaarXtYtO(inner_haar_x[14], inner_haar_y[14], x+30, y-20, 20, 7, ori_weight[4]);
	HaarXtYt(inner_haar_x[15], inner_haar_y[15], x+60, y-40, 20, 7);
	HaarXtYt(inner_haar_x[16], inner_haar_y[16], x+50, y-40, 20, 8);
	HaarXtYt(inner_haar_x[17], inner_haar_y[17], x+60, y-50, 20, 8);
	HaarXtYtO(inner_haar_x[18], inner_haar_y[18], x+30, y-30, 20, 9, ori_weight[7]);
	HaarXtYt(inner_haar_x[19], inner_haar_y[19], x+50, y-50, 20, 9);
	HaarXtYt(inner_haar_x[20], inner_haar_y[20], x+50, y-60, 20, 10);
	HaarXtYt(inner_haar_x[21], inner_haar_y[21], x+40, y-50, 20, 10);
	HaarXtYtO(inner_haar_x[22], inner_haar_y[22], x+20, y-30, 20, 11, ori_weight[4]);
	HaarXtYt(inner_haar_x[23], inner_haar_y[23], x+40, y-60, 20, 11);
	HaarXtYtO(inner_haar_x[24], inner_haar_y[24], x+30, y-50, 20, 12, ori_weight[11]);
	HaarXtYt(inner_haar_x[25], inner_haar_y[25], x+30, y-60, 20, 12);
	HaarXtYtO(inner_haar_x[26], inner_haar_y[26], x+20, y-40, 20, 13, ori_weight[8]);
	HaarXtYt(inner_haar_x[27], inner_haar_y[27], x+30, y-70, 20, 13);
	HaarXtYtO(inner_haar_x[28], inner_haar_y[28], x+10, y-30, 20, 14, ori_weight[3]);
	HaarXtYt(inner_haar_x[29], inner_haar_y[29], x+20, y-60, 20, 14);
	HaarXtYt(inner_haar_x[30], inner_haar_y[30], x+20, y-70, 20, 15);
	HaarXtYtO(inner_haar_x[31], inner_haar_y[31], x+10, y-40, 20, 15, ori_weight[6]);
	HaarXtYtO(inner_haar_x[32], inner_haar_y[32], x+10, y-50, 20, 16, ori_weight[10]);
	HaarXtYt(inner_haar_x[33], inner_haar_y[33], x+10, y-60, 20, 16);
	HaarXtYtO(inner_haar_x[34], inner_haar_y[34], x, y-50, 20, 17, ori_weight[9]);
	HaarXtYt(inner_haar_x[35], inner_haar_y[35], x+10, y-70, 20, 17);
	HaarXtYtO(inner_haar_x[36], inner_haar_y[36], x, y-40, 20, 18, ori_weight[5]);
	HaarXtYt(inner_haar_x[37], inner_haar_y[37], x, y-80, 20, 18);
	HaarXtYtO(inner_haar_x[38], inner_haar_y[38], x, y-60, 20, 19, ori_weight[12]);
	HaarXtYt(inner_haar_x[39], inner_haar_y[39], x-10, y-70, 20, 19);
	HaarXtYt(inner_haar_x[40], inner_haar_y[40], x-10, y-60, 20, 20);
	HaarXtYtO(inner_haar_x[41], inner_haar_y[41], x-10, y-50, 20, 20, ori_weight[10]);
	HaarXtYtO(inner_haar_x[42], inner_haar_y[42], x-10, y-40, 20, 21, ori_weight[6]);
	HaarXtYt(inner_haar_x[43], inner_haar_y[43], x-20, y-70, 20, 21);
	HaarXtYtO(inner_haar_x[44], inner_haar_y[44], x-10, y-30, 20, 22, ori_weight[3]);
	HaarXtYt(inner_haar_x[45], inner_haar_y[45], x-20, y-60, 20, 22);
	HaarXtYt(inner_haar_x[46], inner_haar_y[46], x-30, y-70, 20, 23);
	HaarXtYtO(inner_haar_x[47], inner_haar_y[47], x-20, y-40, 20, 23, ori_weight[8]);
	HaarXtYt(inner_haar_x[48], inner_haar_y[48], x-30, y-60, 20, 24);
	HaarXtYtO(inner_haar_x[49], inner_haar_y[49], x-30, y-50, 20, 24, ori_weight[11]);
	HaarXtYtO(inner_haar_x[50], inner_haar_y[50], x-20, y-30, 20, 25, ori_weight[4]);
	HaarXtYt(inner_haar_x[51], inner_haar_y[51], x-40, y-60, 20, 25);
	HaarXtYt(inner_haar_x[52], inner_haar_y[52], x-40, y-50, 20, 26);
	HaarXtYt(inner_haar_x[53], inner_haar_y[53], x-50, y-60, 20, 26);
	HaarXtYtO(inner_haar_x[54], inner_haar_y[54], x-30, y-30, 20, 27, ori_weight[7]);
	HaarXtYt(inner_haar_x[55], inner_haar_y[55], x-50, y-50, 20, 27);
	HaarXtYt(inner_haar_x[56], inner_haar_y[56], x-60, y-50, 20, 28);
	HaarXtYt(inner_haar_x[57], inner_haar_y[57], x-50, y-40, 20, 28);
	HaarXtYtO(inner_haar_x[58], inner_haar_y[58], x-30, y-20, 20, 29, ori_weight[4]);
	HaarXtYt(inner_haar_x[59], inner_haar_y[59], x-60, y-40, 20, 29);
	HaarXtYtO(inner_haar_x[60], inner_haar_y[60], x-50, y-30, 20, 30, ori_weight[11]);
	HaarXtYt(inner_haar_x[61], inner_haar_y[61], x-60, y-30, 20, 30);
	HaarXtYtO(inner_haar_x[62], inner_haar_y[62], x-40, y-20, 20, 31, ori_weight[8]);
	HaarXtYt(inner_haar_x[63], inner_haar_y[63], x-70, y-30, 20, 31);
	HaarXtYtO(inner_haar_x[64], inner_haar_y[64], x-30, y-10, 20, 32, ori_weight[3]);
	HaarXtYt(inner_haar_x[65], inner_haar_y[65], x-60, y-20, 20, 32);
	HaarXtYt(inner_haar_x[66], inner_haar_y[66], x-70, y-20, 20, 33);
	HaarXtYtO(inner_haar_x[67], inner_haar_y[67], x-40, y-10, 20, 33, ori_weight[6]);
	HaarXtYtO(inner_haar_x[68], inner_haar_y[68], x-50, y-10, 20, 34, ori_weight[10]);
	HaarXtYt(inner_haar_x[69], inner_haar_y[69], x-60, y-10, 20, 34);
	HaarXtYtO(inner_haar_x[70], inner_haar_y[70], x-50, y, 20, 35, ori_weight[9]);
	HaarXtYt(inner_haar_x[71], inner_haar_y[71], x-70, y-10, 20, 35);
	HaarXtYtO(inner_haar_x[72], inner_haar_y[72], x-40, y, 20, 36, ori_weight[5]);
	HaarXtYt(inner_haar_x[73], inner_haar_y[73], x-80, y, 20, 36);
	HaarXtYtO(inner_haar_x[74], inner_haar_y[74], x-60, y, 20, 37, ori_weight[12]);
	HaarXtYt(inner_haar_x[75], inner_haar_y[75], x-70, y+10, 20, 37);
	HaarXtYt(inner_haar_x[76], inner_haar_y[76], x-60, y+10, 20, 38);
	HaarXtYtO(inner_haar_x[77], inner_haar_y[77], x-50, y+10, 20, 38, ori_weight[10]);
	HaarXtYtO(inner_haar_x[78], inner_haar_y[78], x-40, y+10, 20, 39, ori_weight[6]);
	HaarXtYt(inner_haar_x[79], inner_haar_y[79], x-70, y+20, 20, 39);
	HaarXtYtO(inner_haar_x[80], inner_haar_y[80], x-30, y+10, 20, 40, ori_weight[3]);
	HaarXtYt(inner_haar_x[81], inner_haar_y[81], x-60, y+20, 20, 40);
	HaarXtYt(inner_haar_x[82], inner_haar_y[82], x-70, y+30, 20, 41);
	HaarXtYtO(inner_haar_x[83], inner_haar_y[83], x-40, y+20, 20, 41, ori_weight[8]);
	HaarXtYt(inner_haar_x[84], inner_haar_y[84], x-60, y+30, 20, 42);
	HaarXtYtO(inner_haar_x[85], inner_haar_y[85], x-50, y+30, 20, 42, ori_weight[11]);
	HaarXtYtO(inner_haar_x[86], inner_haar_y[86], x-30, y+20, 20, 43, ori_weight[4]);
	HaarXtYt(inner_haar_x[87], inner_haar_y[87], x-60, y+40, 20, 43);
	HaarXtYt(inner_haar_x[88], inner_haar_y[88], x-50, y+40, 20, 44);
	HaarXtYt(inner_haar_x[89], inner_haar_y[89], x-60, y+50, 20, 44);
	HaarXtYtO(inner_haar_x[90], inner_haar_y[90], x-30, y+30, 20, 45, ori_weight[7]);
	HaarXtYt(inner_haar_x[91], inner_haar_y[91], x-50, y+50, 20, 45);
	HaarXtYt(inner_haar_x[92], inner_haar_y[92], x-50, y+60, 20, 46);
	HaarXtYt(inner_haar_x[93], inner_haar_y[93], x-40, y+50, 20, 46);
	HaarXtYtO(inner_haar_x[94], inner_haar_y[94], x-20, y+30, 20, 47, ori_weight[4]);
	HaarXtYt(inner_haar_x[95], inner_haar_y[95], x-40, y+60, 20, 47);
	HaarXtYtO(inner_haar_x[96], inner_haar_y[96], x-30, y+50, 20, 48, ori_weight[11]);
	HaarXtYt(inner_haar_x[97], inner_haar_y[97], x-30, y+60, 20, 48);
	HaarXtYtO(inner_haar_x[98], inner_haar_y[98], x-20, y+40, 20, 49, ori_weight[8]);
	HaarXtYt(inner_haar_x[99], inner_haar_y[99], x-30, y+70, 20, 49);
	HaarXtYtO(inner_haar_x[100], inner_haar_y[100], x-10, y+30, 20, 50, ori_weight[3]);
	HaarXtYt(inner_haar_x[101], inner_haar_y[101], x-20, y+60, 20, 50);
	HaarXtYt(inner_haar_x[102], inner_haar_y[102], x-20, y+70, 20, 51);
	HaarXtYtO(inner_haar_x[103], inner_haar_y[103], x-10, y+40, 20, 51, ori_weight[6]);
	HaarXtYtO(inner_haar_x[104], inner_haar_y[104], x-10, y+50, 20, 52, ori_weight[10]);
	HaarXtYt(inner_haar_x[105], inner_haar_y[105], x-10, y+60, 20, 52);
	HaarXtYtO(inner_haar_x[106], inner_haar_y[106], x, y+50, 20, 53, ori_weight[9]);
	HaarXtYt(inner_haar_x[107], inner_haar_y[107], x-10, y+70, 20, 53);
	HaarXtYtO(inner_haar_x[108], inner_haar_y[108], x, y+40, 20, 54, ori_weight[5]);
	HaarXtYt(inner_haar_x[109], inner_haar_y[109], x, y+80, 20, 54);
	HaarXtYtO(inner_haar_x[110], inner_haar_y[110], x, y+60, 20, 55, ori_weight[12]);
	HaarXtYt(inner_haar_x[111], inner_haar_y[111], x+10, y+70, 20, 55);
	HaarXtYt(inner_haar_x[112], inner_haar_y[112], x+10, y+60, 20, 56);
	HaarXtYtO(inner_haar_x[113], inner_haar_y[113], x+10, y+50, 20, 56, ori_weight[10]);
	HaarXtYtO(inner_haar_x[114], inner_haar_y[114], x+10, y+40, 20, 57, ori_weight[6]);
	HaarXtYt(inner_haar_x[115], inner_haar_y[115], x+20, y+70, 20, 57);
	HaarXtYtO(inner_haar_x[116], inner_haar_y[116], x+10, y+30, 20, 58, ori_weight[3]);
	HaarXtYt(inner_haar_x[117], inner_haar_y[117], x+20, y+60, 20, 58);
	HaarXtYt(inner_haar_x[118], inner_haar_y[118], x+30, y+70, 20, 59);
	HaarXtYtO(inner_haar_x[119], inner_haar_y[119], x+20, y+40, 20, 59, ori_weight[8]);
	HaarXtYt(inner_haar_x[120], inner_haar_y[120], x+30, y+60, 20, 60);
	HaarXtYtO(inner_haar_x[121], inner_haar_y[121], x+30, y+50, 20, 60, ori_weight[11]);
	HaarXtYtO(inner_haar_x[122], inner_haar_y[122], x+20, y+30, 20, 61, ori_weight[4]);
	HaarXtYt(inner_haar_x[123], inner_haar_y[123], x+40, y+60, 20, 61);
	HaarXtYt(inner_haar_x[124], inner_haar_y[124], x+40, y+50, 20, 62);
	HaarXtYt(inner_haar_x[125], inner_haar_y[125], x+50, y+60, 20, 62);
	HaarXtYtO(inner_haar_x[126], inner_haar_y[126], x+30, y+30, 20, 63, ori_weight[7]);
	HaarXtYt(inner_haar_x[127], inner_haar_y[127], x+50, y+50, 20, 63);
	HaarXtYt(inner_haar_x[128], inner_haar_y[128], x+60, y+50, 20, 64);
	HaarXtYt(inner_haar_x[129], inner_haar_y[129], x+50, y+40, 20, 64);
	HaarXtYtO(inner_haar_x[130], inner_haar_y[130], x+30, y+20, 20, 65, ori_weight[4]);
	HaarXtYt(inner_haar_x[131], inner_haar_y[131], x+60, y+40, 20, 65);
	HaarXtYtO(inner_haar_x[132], inner_haar_y[132], x+50, y+30, 20, 66, ori_weight[11]);
	HaarXtYt(inner_haar_x[133], inner_haar_y[133], x+60, y+30, 20, 66);
	HaarXtYtO(inner_haar_x[134], inner_haar_y[134], x+40, y+20, 20, 67, ori_weight[8]);
	HaarXtYt(inner_haar_x[135], inner_haar_y[135], x+70, y+30, 20, 67);
	HaarXtYtO(inner_haar_x[136], inner_haar_y[136], x+30, y+10, 20, 68, ori_weight[3]);
	HaarXtYt(inner_haar_x[137], inner_haar_y[137], x+60, y+20, 20, 68);
	HaarXtYt(inner_haar_x[138], inner_haar_y[138], x+70, y+20, 20, 69);
	HaarXtYtO(inner_haar_x[139], inner_haar_y[139], x+40, y+10, 20, 69, ori_weight[6]);
	HaarXtYtO(inner_haar_x[140], inner_haar_y[140], x+50, y+10, 20, 70, ori_weight[10]);
	HaarXtYt(inner_haar_x[141], inner_haar_y[141], x+60, y+10, 20, 70);
	HaarXtYtO(inner_haar_x[142], inner_haar_y[142], x+60, y, 20, 71, ori_weight[12]);
	HaarXtYt(inner_haar_x[143], inner_haar_y[143], x+70, y+10, 20, 71);

	HaarXtYt(outer_haar_x[0], outer_haar_y[0], x+90, y, 20, 0);
	HaarXtYt(outer_haar_x[1], outer_haar_y[1], x+120, y, 20, 0);
	HaarXtYt(outer_haar_x[2], outer_haar_y[2], x+150, y, 20, 0);
	HaarXtYt(outer_haar_x[3], outer_haar_y[3], x+140, y-10, 20, 1);
	HaarXtYt(outer_haar_x[4], outer_haar_y[4], x+110, y-10, 20, 1);
	HaarXtYt(outer_haar_x[5], outer_haar_y[5], x+80, y-10, 20, 1);
	HaarXtYt(outer_haar_x[6], outer_haar_y[6], x+120, y-20, 20, 2);
	HaarXtYt(outer_haar_x[7], outer_haar_y[7], x+100, y-20, 20, 2);
	HaarXtYt(outer_haar_x[8], outer_haar_y[8], x+140, y-30, 20, 2);
	HaarXtYt(outer_haar_x[9], outer_haar_y[9], x+80, y-20, 20, 3);
	HaarXtYt(outer_haar_x[10], outer_haar_y[10], x+110, y-30, 20, 3);
	HaarXtYt(outer_haar_x[11], outer_haar_y[11], x+140, y-40, 20, 3);
	HaarXtYt(outer_haar_x[12], outer_haar_y[12], x+140, y-50, 20, 4);
	HaarXtYt(outer_haar_x[13], outer_haar_y[13], x+110, y-40, 20, 4);
	HaarXtYt(outer_haar_x[14], outer_haar_y[14], x+80, y-30, 20, 4);
	HaarXtYt(outer_haar_x[15], outer_haar_y[15], x+130, y-60, 20, 5);
	HaarXtYt(outer_haar_x[16], outer_haar_y[16], x+80, y-40, 20, 5);
	HaarXtYt(outer_haar_x[17], outer_haar_y[17], x+100, y-50, 20, 5);
	HaarXtYt(outer_haar_x[18], outer_haar_y[18], x+130, y-70, 20, 6);
	HaarXtYt(outer_haar_x[19], outer_haar_y[19], x+70, y-40, 20, 6);
	HaarXtYt(outer_haar_x[20], outer_haar_y[20], x+100, y-60, 20, 6);
	HaarXtYt(outer_haar_x[21], outer_haar_y[21], x+100, y-70, 20, 7);
	HaarXtYt(outer_haar_x[22], outer_haar_y[22], x+70, y-50, 20, 7);
	HaarXtYt(outer_haar_x[23], outer_haar_y[23], x+120, y-90, 20, 7);
	HaarXtYt(outer_haar_x[24], outer_haar_y[24], x+70, y-60, 20, 8);
	HaarXtYt(outer_haar_x[25], outer_haar_y[25], x+90, y-80, 20, 8);
	HaarXtYt(outer_haar_x[26], outer_haar_y[26], x+110, y-100, 20, 8);
	HaarXtYt(outer_haar_x[27], outer_haar_y[27], x+60, y-60, 20, 9);
	HaarXtYt(outer_haar_x[28], outer_haar_y[28], x+80, y-80, 20, 9);
	HaarXtYt(outer_haar_x[29], outer_haar_y[29], x+100, y-100, 20, 9);
	HaarXtYt(outer_haar_x[30], outer_haar_y[30], x+100, y-110, 20, 10);
	HaarXtYt(outer_haar_x[31], outer_haar_y[31], x+80, y-90, 20, 10);
	HaarXtYt(outer_haar_x[32], outer_haar_y[32], x+60, y-70, 20, 10);
	HaarXtYt(outer_haar_x[33], outer_haar_y[33], x+90, y-120, 20, 11);
	HaarXtYt(outer_haar_x[34], outer_haar_y[34], x+50, y-70, 20, 11);
	HaarXtYt(outer_haar_x[35], outer_haar_y[35], x+70, y-100, 20, 11);
	HaarXtYt(outer_haar_x[36], outer_haar_y[36], x+60, y-100, 20, 12);
	HaarXtYt(outer_haar_x[37], outer_haar_y[37], x+40, y-70, 20, 12);
	HaarXtYt(outer_haar_x[38], outer_haar_y[38], x+70, y-130, 20, 12);
	HaarXtYt(outer_haar_x[39], outer_haar_y[39], x+40, y-80, 20, 13);
	HaarXtYt(outer_haar_x[40], outer_haar_y[40], x+50, y-100, 20, 13);
	HaarXtYt(outer_haar_x[41], outer_haar_y[41], x+60, y-130, 20, 13);
	HaarXtYt(outer_haar_x[42], outer_haar_y[42], x+30, y-80, 20, 14);
	HaarXtYt(outer_haar_x[43], outer_haar_y[43], x+40, y-110, 20, 14);
	HaarXtYt(outer_haar_x[44], outer_haar_y[44], x+50, y-140, 20, 14);
	HaarXtYt(outer_haar_x[45], outer_haar_y[45], x+40, y-140, 20, 15);
	HaarXtYt(outer_haar_x[46], outer_haar_y[46], x+30, y-110, 20, 15);
	HaarXtYt(outer_haar_x[47], outer_haar_y[47], x+20, y-80, 20, 15);
	HaarXtYt(outer_haar_x[48], outer_haar_y[48], x+30, y-140, 20, 16);
	HaarXtYt(outer_haar_x[49], outer_haar_y[49], x+20, y-100, 20, 16);
	HaarXtYt(outer_haar_x[50], outer_haar_y[50], x+20, y-120, 20, 16);
	HaarXtYt(outer_haar_x[51], outer_haar_y[51], x+10, y-80, 20, 17);
	HaarXtYt(outer_haar_x[52], outer_haar_y[52], x+10, y-110, 20, 17);
	HaarXtYt(outer_haar_x[53], outer_haar_y[53], x+10, y-140, 20, 17);
	HaarXtYt(outer_haar_x[54], outer_haar_y[54], x, y-90, 20, 18);
	HaarXtYt(outer_haar_x[55], outer_haar_y[55], x, y-120, 20, 18);
	HaarXtYt(outer_haar_x[56], outer_haar_y[56], x, y-150, 20, 18);
	HaarXtYt(outer_haar_x[57], outer_haar_y[57], x-10, y-140, 20, 19);
	HaarXtYt(outer_haar_x[58], outer_haar_y[58], x-10, y-110, 20, 19);
	HaarXtYt(outer_haar_x[59], outer_haar_y[59], x-10, y-80, 20, 19);
	HaarXtYt(outer_haar_x[60], outer_haar_y[60], x-20, y-120, 20, 20);
	HaarXtYt(outer_haar_x[61], outer_haar_y[61], x-20, y-100, 20, 20);
	HaarXtYt(outer_haar_x[62], outer_haar_y[62], x-30, y-140, 20, 20);
	HaarXtYt(outer_haar_x[63], outer_haar_y[63], x-20, y-80, 20, 21);
	HaarXtYt(outer_haar_x[64], outer_haar_y[64], x-30, y-110, 20, 21);
	HaarXtYt(outer_haar_x[65], outer_haar_y[65], x-40, y-140, 20, 21);
	HaarXtYt(outer_haar_x[66], outer_haar_y[66], x-50, y-140, 20, 22);
	HaarXtYt(outer_haar_x[67], outer_haar_y[67], x-40, y-110, 20, 22);
	HaarXtYt(outer_haar_x[68], outer_haar_y[68], x-30, y-80, 20, 22);
	HaarXtYt(outer_haar_x[69], outer_haar_y[69], x-60, y-130, 20, 23);
	HaarXtYt(outer_haar_x[70], outer_haar_y[70], x-40, y-80, 20, 23);
	HaarXtYt(outer_haar_x[71], outer_haar_y[71], x-50, y-100, 20, 23);
	HaarXtYt(outer_haar_x[72], outer_haar_y[72], x-70, y-130, 20, 24);
	HaarXtYt(outer_haar_x[73], outer_haar_y[73], x-40, y-70, 20, 24);
	HaarXtYt(outer_haar_x[74], outer_haar_y[74], x-60, y-100, 20, 24);
	HaarXtYt(outer_haar_x[75], outer_haar_y[75], x-70, y-100, 20, 25);
	HaarXtYt(outer_haar_x[76], outer_haar_y[76], x-50, y-70, 20, 25);
	HaarXtYt(outer_haar_x[77], outer_haar_y[77], x-90, y-120, 20, 25);
	HaarXtYt(outer_haar_x[78], outer_haar_y[78], x-60, y-70, 20, 26);
	HaarXtYt(outer_haar_x[79], outer_haar_y[79], x-80, y-90, 20, 26);
	HaarXtYt(outer_haar_x[80], outer_haar_y[80], x-100, y-110, 20, 26);
	HaarXtYt(outer_haar_x[81], outer_haar_y[81], x-60, y-60, 20, 27);
	HaarXtYt(outer_haar_x[82], outer_haar_y[82], x-80, y-80, 20, 27);
	HaarXtYt(outer_haar_x[83], outer_haar_y[83], x-100, y-100, 20, 27);
	HaarXtYt(outer_haar_x[84], outer_haar_y[84], x-110, y-100, 20, 28);
	HaarXtYt(outer_haar_x[85], outer_haar_y[85], x-90, y-80, 20, 28);
	HaarXtYt(outer_haar_x[86], outer_haar_y[86], x-70, y-60, 20, 28);
	HaarXtYt(outer_haar_x[87], outer_haar_y[87], x-120, y-90, 20, 29);
	HaarXtYt(outer_haar_x[88], outer_haar_y[88], x-70, y-50, 20, 29);
	HaarXtYt(outer_haar_x[89], outer_haar_y[89], x-100, y-70, 20, 29);
	HaarXtYt(outer_haar_x[90], outer_haar_y[90], x-100, y-60, 20, 30);
	HaarXtYt(outer_haar_x[91], outer_haar_y[91], x-70, y-40, 20, 30);
	HaarXtYt(outer_haar_x[92], outer_haar_y[92], x-130, y-70, 20, 30);
	HaarXtYt(outer_haar_x[93], outer_haar_y[93], x-80, y-40, 20, 31);
	HaarXtYt(outer_haar_x[94], outer_haar_y[94], x-100, y-50, 20, 31);
	HaarXtYt(outer_haar_x[95], outer_haar_y[95], x-130, y-60, 20, 31);
	HaarXtYt(outer_haar_x[96], outer_haar_y[96], x-80, y-30, 20, 32);
	HaarXtYt(outer_haar_x[97], outer_haar_y[97], x-110, y-40, 20, 32);
	HaarXtYt(outer_haar_x[98], outer_haar_y[98], x-140, y-50, 20, 32);
	HaarXtYt(outer_haar_x[99], outer_haar_y[99], x-140, y-40, 20, 33);
	HaarXtYt(outer_haar_x[100], outer_haar_y[100], x-110, y-30, 20, 33);
	HaarXtYt(outer_haar_x[101], outer_haar_y[101], x-80, y-20, 20, 33);
	HaarXtYt(outer_haar_x[102], outer_haar_y[102], x-140, y-30, 20, 34);
	HaarXtYt(outer_haar_x[103], outer_haar_y[103], x-100, y-20, 20, 34);
	HaarXtYt(outer_haar_x[104], outer_haar_y[104], x-120, y-20, 20, 34);
	HaarXtYt(outer_haar_x[105], outer_haar_y[105], x-80, y-10, 20, 35);
	HaarXtYt(outer_haar_x[106], outer_haar_y[106], x-110, y-10, 20, 35);
	HaarXtYt(outer_haar_x[107], outer_haar_y[107], x-140, y-10, 20, 35);
	HaarXtYt(outer_haar_x[108], outer_haar_y[108], x-90, y, 20, 36);
	HaarXtYt(outer_haar_x[109], outer_haar_y[109], x-120, y, 20, 36);
	HaarXtYt(outer_haar_x[110], outer_haar_y[110], x-150, y, 20, 36);
	HaarXtYt(outer_haar_x[111], outer_haar_y[111], x-140, y+10, 20, 37);
	HaarXtYt(outer_haar_x[112], outer_haar_y[112], x-110, y+10, 20, 37);
	HaarXtYt(outer_haar_x[113], outer_haar_y[113], x-80, y+10, 20, 37);
	HaarXtYt(outer_haar_x[114], outer_haar_y[114], x-120, y+20, 20, 38);
	HaarXtYt(outer_haar_x[115], outer_haar_y[115], x-100, y+20, 20, 38);
	HaarXtYt(outer_haar_x[116], outer_haar_y[116], x-140, y+30, 20, 38);
	HaarXtYt(outer_haar_x[117], outer_haar_y[117], x-80, y+20, 20, 39);
	HaarXtYt(outer_haar_x[118], outer_haar_y[118], x-110, y+30, 20, 39);
	HaarXtYt(outer_haar_x[119], outer_haar_y[119], x-140, y+40, 20, 39);
	HaarXtYt(outer_haar_x[120], outer_haar_y[120], x-140, y+50, 20, 40);
	HaarXtYt(outer_haar_x[121], outer_haar_y[121], x-110, y+40, 20, 40);
	HaarXtYt(outer_haar_x[122], outer_haar_y[122], x-80, y+30, 20, 40);
	HaarXtYt(outer_haar_x[123], outer_haar_y[123], x-130, y+60, 20, 41);
	HaarXtYt(outer_haar_x[124], outer_haar_y[124], x-80, y+40, 20, 41);
	HaarXtYt(outer_haar_x[125], outer_haar_y[125], x-100, y+50, 20, 41);
	HaarXtYt(outer_haar_x[126], outer_haar_y[126], x-130, y+70, 20, 42);
	HaarXtYt(outer_haar_x[127], outer_haar_y[127], x-70, y+40, 20, 42);
	HaarXtYt(outer_haar_x[128], outer_haar_y[128], x-100, y+60, 20, 42);
	HaarXtYt(outer_haar_x[129], outer_haar_y[129], x-100, y+70, 20, 43);
	HaarXtYt(outer_haar_x[130], outer_haar_y[130], x-70, y+50, 20, 43);
	HaarXtYt(outer_haar_x[131], outer_haar_y[131], x-120, y+90, 20, 43);
	HaarXtYt(outer_haar_x[132], outer_haar_y[132], x-70, y+60, 20, 44);
	HaarXtYt(outer_haar_x[133], outer_haar_y[133], x-90, y+80, 20, 44);
	HaarXtYt(outer_haar_x[134], outer_haar_y[134], x-110, y+100, 20, 44);
	HaarXtYt(outer_haar_x[135], outer_haar_y[135], x-60, y+60, 20, 45);
	HaarXtYt(outer_haar_x[136], outer_haar_y[136], x-80, y+80, 20, 45);
	HaarXtYt(outer_haar_x[137], outer_haar_y[137], x-100, y+100, 20, 45);
	HaarXtYt(outer_haar_x[138], outer_haar_y[138], x-100, y+110, 20, 46);
	HaarXtYt(outer_haar_x[139], outer_haar_y[139], x-80, y+90, 20, 46);
	HaarXtYt(outer_haar_x[140], outer_haar_y[140], x-60, y+70, 20, 46);
	HaarXtYt(outer_haar_x[141], outer_haar_y[141], x-90, y+120, 20, 47);
	HaarXtYt(outer_haar_x[142], outer_haar_y[142], x-50, y+70, 20, 47);
	HaarXtYt(outer_haar_x[143], outer_haar_y[143], x-70, y+100, 20, 47);
	HaarXtYt(outer_haar_x[144], outer_haar_y[144], x-60, y+100, 20, 48);
	HaarXtYt(outer_haar_x[145], outer_haar_y[145], x-40, y+70, 20, 48);
	HaarXtYt(outer_haar_x[146], outer_haar_y[146], x-70, y+130, 20, 48);
	HaarXtYt(outer_haar_x[147], outer_haar_y[147], x-40, y+80, 20, 49);
	HaarXtYt(outer_haar_x[148], outer_haar_y[148], x-50, y+100, 20, 49);
	HaarXtYt(outer_haar_x[149], outer_haar_y[149], x-60, y+130, 20, 49);
	HaarXtYt(outer_haar_x[150], outer_haar_y[150], x-30, y+80, 20, 50);
	HaarXtYt(outer_haar_x[151], outer_haar_y[151], x-40, y+110, 20, 50);
	HaarXtYt(outer_haar_x[152], outer_haar_y[152], x-50, y+140, 20, 50);
	HaarXtYt(outer_haar_x[153], outer_haar_y[153], x-40, y+140, 20, 51);
	HaarXtYt(outer_haar_x[154], outer_haar_y[154], x-30, y+110, 20, 51);
	HaarXtYt(outer_haar_x[155], outer_haar_y[155], x-20, y+80, 20, 51);
	HaarXtYt(outer_haar_x[156], outer_haar_y[156], x-30, y+140, 20, 52);
	HaarXtYt(outer_haar_x[157], outer_haar_y[157], x-20, y+100, 20, 52);
	HaarXtYt(outer_haar_x[158], outer_haar_y[158], x-20, y+120, 20, 52);
	HaarXtYt(outer_haar_x[159], outer_haar_y[159], x-10, y+80, 20, 53);
	HaarXtYt(outer_haar_x[160], outer_haar_y[160], x-10, y+110, 20, 53);
	HaarXtYt(outer_haar_x[161], outer_haar_y[161], x-10, y+140, 20, 53);
	HaarXtYt(outer_haar_x[162], outer_haar_y[162], x, y+90, 20, 54);
	HaarXtYt(outer_haar_x[163], outer_haar_y[163], x, y+120, 20, 54);
	HaarXtYt(outer_haar_x[164], outer_haar_y[164], x, y+150, 20, 54);
	HaarXtYt(outer_haar_x[165], outer_haar_y[165], x+10, y+140, 20, 55);
	HaarXtYt(outer_haar_x[166], outer_haar_y[166], x+10, y+110, 20, 55);
	HaarXtYt(outer_haar_x[167], outer_haar_y[167], x+10, y+80, 20, 55);
	HaarXtYt(outer_haar_x[168], outer_haar_y[168], x+20, y+120, 20, 56);
	HaarXtYt(outer_haar_x[169], outer_haar_y[169], x+20, y+100, 20, 56);
	HaarXtYt(outer_haar_x[170], outer_haar_y[170], x+30, y+140, 20, 56);
	HaarXtYt(outer_haar_x[171], outer_haar_y[171], x+20, y+80, 20, 57);
	HaarXtYt(outer_haar_x[172], outer_haar_y[172], x+30, y+110, 20, 57);
	HaarXtYt(outer_haar_x[173], outer_haar_y[173], x+40, y+140, 20, 57);
	HaarXtYt(outer_haar_x[174], outer_haar_y[174], x+50, y+140, 20, 58);
	HaarXtYt(outer_haar_x[175], outer_haar_y[175], x+40, y+110, 20, 58);
	HaarXtYt(outer_haar_x[176], outer_haar_y[176], x+30, y+80, 20, 58);
	HaarXtYt(outer_haar_x[177], outer_haar_y[177], x+60, y+130, 20, 59);
	HaarXtYt(outer_haar_x[178], outer_haar_y[178], x+40, y+80, 20, 59);
	HaarXtYt(outer_haar_x[179], outer_haar_y[179], x+50, y+100, 20, 59);
	HaarXtYt(outer_haar_x[180], outer_haar_y[180], x+70, y+130, 20, 60);
	HaarXtYt(outer_haar_x[181], outer_haar_y[181], x+40, y+70, 20, 60);
	HaarXtYt(outer_haar_x[182], outer_haar_y[182], x+60, y+100, 20, 60);
	HaarXtYt(outer_haar_x[183], outer_haar_y[183], x+70, y+100, 20, 61);
	HaarXtYt(outer_haar_x[184], outer_haar_y[184], x+50, y+70, 20, 61);
	HaarXtYt(outer_haar_x[185], outer_haar_y[185], x+90, y+120, 20, 61);
	HaarXtYt(outer_haar_x[186], outer_haar_y[186], x+60, y+70, 20, 62);
	HaarXtYt(outer_haar_x[187], outer_haar_y[187], x+80, y+90, 20, 62);
	HaarXtYt(outer_haar_x[188], outer_haar_y[188], x+100, y+110, 20, 62);
	HaarXtYt(outer_haar_x[189], outer_haar_y[189], x+60, y+60, 20, 63);
	HaarXtYt(outer_haar_x[190], outer_haar_y[190], x+80, y+80, 20, 63);
	HaarXtYt(outer_haar_x[191], outer_haar_y[191], x+100, y+100, 20, 63);
	HaarXtYt(outer_haar_x[192], outer_haar_y[192], x+110, y+100, 20, 64);
	HaarXtYt(outer_haar_x[193], outer_haar_y[193], x+90, y+80, 20, 64);
	HaarXtYt(outer_haar_x[194], outer_haar_y[194], x+70, y+60, 20, 64);
	HaarXtYt(outer_haar_x[195], outer_haar_y[195], x+120, y+90, 20, 65);
	HaarXtYt(outer_haar_x[196], outer_haar_y[196], x+70, y+50, 20, 65);
	HaarXtYt(outer_haar_x[197], outer_haar_y[197], x+100, y+70, 20, 65);
	HaarXtYt(outer_haar_x[198], outer_haar_y[198], x+100, y+60, 20, 66);
	HaarXtYt(outer_haar_x[199], outer_haar_y[199], x+70, y+40, 20, 66);
	HaarXtYt(outer_haar_x[200], outer_haar_y[200], x+130, y+70, 20, 66);
	HaarXtYt(outer_haar_x[201], outer_haar_y[201], x+80, y+40, 20, 67);
	HaarXtYt(outer_haar_x[202], outer_haar_y[202], x+100, y+50, 20, 67);
	HaarXtYt(outer_haar_x[203], outer_haar_y[203], x+130, y+60, 20, 67);
	HaarXtYt(outer_haar_x[204], outer_haar_y[204], x+80, y+30, 20, 68);
	HaarXtYt(outer_haar_x[205], outer_haar_y[205], x+110, y+40, 20, 68);
	HaarXtYt(outer_haar_x[206], outer_haar_y[206], x+140, y+50, 20, 68);
	HaarXtYt(outer_haar_x[207], outer_haar_y[207], x+140, y+40, 20, 69);
	HaarXtYt(outer_haar_x[208], outer_haar_y[208], x+110, y+30, 20, 69);
	HaarXtYt(outer_haar_x[209], outer_haar_y[209], x+80, y+20, 20, 69);
	HaarXtYt(outer_haar_x[210], outer_haar_y[210], x+140, y+30, 20, 70);
	HaarXtYt(outer_haar_x[211], outer_haar_y[211], x+100, y+20, 20, 70);
	HaarXtYt(outer_haar_x[212], outer_haar_y[212], x+120, y+20, 20, 70);
	HaarXtYt(outer_haar_x[213], outer_haar_y[213], x+80, y+10, 20, 71);
	HaarXtYt(outer_haar_x[214], outer_haar_y[214], x+110, y+10, 20, 71);
	HaarXtYt(outer_haar_x[215], outer_haar_y[215], x+140, y+10, 20, 71);
}

void Scarf::DescriptorResponsesGen11(int x, int y)
{
	ZeroOrientation();

	HaarXYO(center_haar_x[0], center_haar_y[0], x-11, y, 22, ori_weight[0]);
	HaarXYO(center_haar_x[1], center_haar_y[1], x, y+11, 22, ori_weight[0]);
	HaarXYO(center_haar_x[2], center_haar_y[2], x, y-11, 22, ori_weight[0]);
	HaarXYO(center_haar_x[3], center_haar_y[3], x+11, y, 22, ori_weight[0]);
	HaarXYO(center_haar_x[4], center_haar_y[4], x-22, y+11, 22, ori_weight[1]);
	HaarXYO(center_haar_x[5], center_haar_y[5], x-22, y-11, 22, ori_weight[1]);
	HaarXYO(center_haar_x[6], center_haar_y[6], x-11, y+22, 22, ori_weight[1]);
	HaarXYO(center_haar_x[7], center_haar_y[7], x-11, y-22, 22, ori_weight[1]);
	HaarXYO(center_haar_x[8], center_haar_y[8], x+11, y+22, 22, ori_weight[1]);
	HaarXYO(center_haar_x[9], center_haar_y[9], x+11, y-22, 22, ori_weight[1]);
	HaarXYO(center_haar_x[10], center_haar_y[10], x+22, y+11, 22, ori_weight[1]);
	HaarXYO(center_haar_x[11], center_haar_y[11], x+22, y-11, 22, ori_weight[1]);
	HaarXYO(center_haar_x[12], center_haar_y[12], x-33, y, 22, ori_weight[2]);
	HaarXYO(center_haar_x[13], center_haar_y[13], x, y+33, 22, ori_weight[2]);
	HaarXYO(center_haar_x[14], center_haar_y[14], x, y-33, 22, ori_weight[2]);
	HaarXYO(center_haar_x[15], center_haar_y[15], x+33, y, 22, ori_weight[2]);

	HaarXtYtO(inner_haar_x[0], inner_haar_y[0], x+44, y, 22, 0, ori_weight[5]);
	HaarXtYt(inner_haar_x[1], inner_haar_y[1], x+88, y, 22, 0);
	HaarXtYtO(inner_haar_x[2], inner_haar_y[2], x+55, y, 22, 1, ori_weight[9]);
	HaarXtYt(inner_haar_x[3], inner_haar_y[3], x+77, y-11, 22, 1);
	HaarXtYt(inner_haar_x[4], inner_haar_y[4], x+66, y-11, 22, 2);
	HaarXtYtO(inner_haar_x[5], inner_haar_y[5], x+55, y-11, 22, 2, ori_weight[10]);
	HaarXtYtO(inner_haar_x[6], inner_haar_y[6], x+44, y-11, 22, 3, ori_weight[6]);
	HaarXtYt(inner_haar_x[7], inner_haar_y[7], x+77, y-22, 22, 3);
	HaarXtYtO(inner_haar_x[8], inner_haar_y[8], x+33, y-11, 22, 4, ori_weight[3]);
	HaarXtYt(inner_haar_x[9], inner_haar_y[9], x+66, y-22, 22, 4);
	HaarXtYt(inner_haar_x[10], inner_haar_y[10], x+77, y-33, 22, 5);
	HaarXtYtO(inner_haar_x[11], inner_haar_y[11], x+44, y-22, 22, 5, ori_weight[8]);
	HaarXtYt(inner_haar_x[12], inner_haar_y[12], x+66, y-33, 22, 6);
	HaarXtYtO(inner_haar_x[13], inner_haar_y[13], x+55, y-33, 22, 6, ori_weight[11]);
	HaarXtYtO(inner_haar_x[14], inner_haar_y[14], x+33, y-22, 22, 7, ori_weight[4]);
	HaarXtYt(inner_haar_x[15], inner_haar_y[15], x+66, y-44, 22, 7);
	HaarXtYt(inner_haar_x[16], inner_haar_y[16], x+55, y-44, 22, 8);
	HaarXtYt(inner_haar_x[17], inner_haar_y[17], x+66, y-55, 22, 8);
	HaarXtYtO(inner_haar_x[18], inner_haar_y[18], x+33, y-33, 22, 9, ori_weight[7]);
	HaarXtYt(inner_haar_x[19], inner_haar_y[19], x+55, y-55, 22, 9);
	HaarXtYt(inner_haar_x[20], inner_haar_y[20], x+55, y-66, 22, 10);
	HaarXtYt(inner_haar_x[21], inner_haar_y[21], x+44, y-55, 22, 10);
	HaarXtYtO(inner_haar_x[22], inner_haar_y[22], x+22, y-33, 22, 11, ori_weight[4]);
	HaarXtYt(inner_haar_x[23], inner_haar_y[23], x+44, y-66, 22, 11);
	HaarXtYtO(inner_haar_x[24], inner_haar_y[24], x+33, y-55, 22, 12, ori_weight[11]);
	HaarXtYt(inner_haar_x[25], inner_haar_y[25], x+33, y-66, 22, 12);
	HaarXtYtO(inner_haar_x[26], inner_haar_y[26], x+22, y-44, 22, 13, ori_weight[8]);
	HaarXtYt(inner_haar_x[27], inner_haar_y[27], x+33, y-77, 22, 13);
	HaarXtYtO(inner_haar_x[28], inner_haar_y[28], x+11, y-33, 22, 14, ori_weight[3]);
	HaarXtYt(inner_haar_x[29], inner_haar_y[29], x+22, y-66, 22, 14);
	HaarXtYt(inner_haar_x[30], inner_haar_y[30], x+22, y-77, 22, 15);
	HaarXtYtO(inner_haar_x[31], inner_haar_y[31], x+11, y-44, 22, 15, ori_weight[6]);
	HaarXtYtO(inner_haar_x[32], inner_haar_y[32], x+11, y-55, 22, 16, ori_weight[10]);
	HaarXtYt(inner_haar_x[33], inner_haar_y[33], x+11, y-66, 22, 16);
	HaarXtYtO(inner_haar_x[34], inner_haar_y[34], x, y-55, 22, 17, ori_weight[9]);
	HaarXtYt(inner_haar_x[35], inner_haar_y[35], x+11, y-77, 22, 17);
	HaarXtYtO(inner_haar_x[36], inner_haar_y[36], x, y-44, 22, 18, ori_weight[5]);
	HaarXtYt(inner_haar_x[37], inner_haar_y[37], x, y-88, 22, 18);
	HaarXtYtO(inner_haar_x[38], inner_haar_y[38], x, y-66, 22, 19, ori_weight[12]);
	HaarXtYt(inner_haar_x[39], inner_haar_y[39], x-11, y-77, 22, 19);
	HaarXtYt(inner_haar_x[40], inner_haar_y[40], x-11, y-66, 22, 20);
	HaarXtYtO(inner_haar_x[41], inner_haar_y[41], x-11, y-55, 22, 20, ori_weight[10]);
	HaarXtYtO(inner_haar_x[42], inner_haar_y[42], x-11, y-44, 22, 21, ori_weight[6]);
	HaarXtYt(inner_haar_x[43], inner_haar_y[43], x-22, y-77, 22, 21);
	HaarXtYtO(inner_haar_x[44], inner_haar_y[44], x-11, y-33, 22, 22, ori_weight[3]);
	HaarXtYt(inner_haar_x[45], inner_haar_y[45], x-22, y-66, 22, 22);
	HaarXtYt(inner_haar_x[46], inner_haar_y[46], x-33, y-77, 22, 23);
	HaarXtYtO(inner_haar_x[47], inner_haar_y[47], x-22, y-44, 22, 23, ori_weight[8]);
	HaarXtYt(inner_haar_x[48], inner_haar_y[48], x-33, y-66, 22, 24);
	HaarXtYtO(inner_haar_x[49], inner_haar_y[49], x-33, y-55, 22, 24, ori_weight[11]);
	HaarXtYtO(inner_haar_x[50], inner_haar_y[50], x-22, y-33, 22, 25, ori_weight[4]);
	HaarXtYt(inner_haar_x[51], inner_haar_y[51], x-44, y-66, 22, 25);
	HaarXtYt(inner_haar_x[52], inner_haar_y[52], x-44, y-55, 22, 26);
	HaarXtYt(inner_haar_x[53], inner_haar_y[53], x-55, y-66, 22, 26);
	HaarXtYtO(inner_haar_x[54], inner_haar_y[54], x-33, y-33, 22, 27, ori_weight[7]);
	HaarXtYt(inner_haar_x[55], inner_haar_y[55], x-55, y-55, 22, 27);
	HaarXtYt(inner_haar_x[56], inner_haar_y[56], x-66, y-55, 22, 28);
	HaarXtYt(inner_haar_x[57], inner_haar_y[57], x-55, y-44, 22, 28);
	HaarXtYtO(inner_haar_x[58], inner_haar_y[58], x-33, y-22, 22, 29, ori_weight[4]);
	HaarXtYt(inner_haar_x[59], inner_haar_y[59], x-66, y-44, 22, 29);
	HaarXtYtO(inner_haar_x[60], inner_haar_y[60], x-55, y-33, 22, 30, ori_weight[11]);
	HaarXtYt(inner_haar_x[61], inner_haar_y[61], x-66, y-33, 22, 30);
	HaarXtYtO(inner_haar_x[62], inner_haar_y[62], x-44, y-22, 22, 31, ori_weight[8]);
	HaarXtYt(inner_haar_x[63], inner_haar_y[63], x-77, y-33, 22, 31);
	HaarXtYtO(inner_haar_x[64], inner_haar_y[64], x-33, y-11, 22, 32, ori_weight[3]);
	HaarXtYt(inner_haar_x[65], inner_haar_y[65], x-66, y-22, 22, 32);
	HaarXtYt(inner_haar_x[66], inner_haar_y[66], x-77, y-22, 22, 33);
	HaarXtYtO(inner_haar_x[67], inner_haar_y[67], x-44, y-11, 22, 33, ori_weight[6]);
	HaarXtYtO(inner_haar_x[68], inner_haar_y[68], x-55, y-11, 22, 34, ori_weight[10]);
	HaarXtYt(inner_haar_x[69], inner_haar_y[69], x-66, y-11, 22, 34);
	HaarXtYtO(inner_haar_x[70], inner_haar_y[70], x-55, y, 22, 35, ori_weight[9]);
	HaarXtYt(inner_haar_x[71], inner_haar_y[71], x-77, y-11, 22, 35);
	HaarXtYtO(inner_haar_x[72], inner_haar_y[72], x-44, y, 22, 36, ori_weight[5]);
	HaarXtYt(inner_haar_x[73], inner_haar_y[73], x-88, y, 22, 36);
	HaarXtYtO(inner_haar_x[74], inner_haar_y[74], x-66, y, 22, 37, ori_weight[12]);
	HaarXtYt(inner_haar_x[75], inner_haar_y[75], x-77, y+11, 22, 37);
	HaarXtYt(inner_haar_x[76], inner_haar_y[76], x-66, y+11, 22, 38);
	HaarXtYtO(inner_haar_x[77], inner_haar_y[77], x-55, y+11, 22, 38, ori_weight[10]);
	HaarXtYtO(inner_haar_x[78], inner_haar_y[78], x-44, y+11, 22, 39, ori_weight[6]);
	HaarXtYt(inner_haar_x[79], inner_haar_y[79], x-77, y+22, 22, 39);
	HaarXtYtO(inner_haar_x[80], inner_haar_y[80], x-33, y+11, 22, 40, ori_weight[3]);
	HaarXtYt(inner_haar_x[81], inner_haar_y[81], x-66, y+22, 22, 40);
	HaarXtYt(inner_haar_x[82], inner_haar_y[82], x-77, y+33, 22, 41);
	HaarXtYtO(inner_haar_x[83], inner_haar_y[83], x-44, y+22, 22, 41, ori_weight[8]);
	HaarXtYt(inner_haar_x[84], inner_haar_y[84], x-66, y+33, 22, 42);
	HaarXtYtO(inner_haar_x[85], inner_haar_y[85], x-55, y+33, 22, 42, ori_weight[11]);
	HaarXtYtO(inner_haar_x[86], inner_haar_y[86], x-33, y+22, 22, 43, ori_weight[4]);
	HaarXtYt(inner_haar_x[87], inner_haar_y[87], x-66, y+44, 22, 43);
	HaarXtYt(inner_haar_x[88], inner_haar_y[88], x-55, y+44, 22, 44);
	HaarXtYt(inner_haar_x[89], inner_haar_y[89], x-66, y+55, 22, 44);
	HaarXtYtO(inner_haar_x[90], inner_haar_y[90], x-33, y+33, 22, 45, ori_weight[7]);
	HaarXtYt(inner_haar_x[91], inner_haar_y[91], x-55, y+55, 22, 45);
	HaarXtYt(inner_haar_x[92], inner_haar_y[92], x-55, y+66, 22, 46);
	HaarXtYt(inner_haar_x[93], inner_haar_y[93], x-44, y+55, 22, 46);
	HaarXtYtO(inner_haar_x[94], inner_haar_y[94], x-22, y+33, 22, 47, ori_weight[4]);
	HaarXtYt(inner_haar_x[95], inner_haar_y[95], x-44, y+66, 22, 47);
	HaarXtYtO(inner_haar_x[96], inner_haar_y[96], x-33, y+55, 22, 48, ori_weight[11]);
	HaarXtYt(inner_haar_x[97], inner_haar_y[97], x-33, y+66, 22, 48);
	HaarXtYtO(inner_haar_x[98], inner_haar_y[98], x-22, y+44, 22, 49, ori_weight[8]);
	HaarXtYt(inner_haar_x[99], inner_haar_y[99], x-33, y+77, 22, 49);
	HaarXtYtO(inner_haar_x[100], inner_haar_y[100], x-11, y+33, 22, 50, ori_weight[3]);
	HaarXtYt(inner_haar_x[101], inner_haar_y[101], x-22, y+66, 22, 50);
	HaarXtYt(inner_haar_x[102], inner_haar_y[102], x-22, y+77, 22, 51);
	HaarXtYtO(inner_haar_x[103], inner_haar_y[103], x-11, y+44, 22, 51, ori_weight[6]);
	HaarXtYtO(inner_haar_x[104], inner_haar_y[104], x-11, y+55, 22, 52, ori_weight[10]);
	HaarXtYt(inner_haar_x[105], inner_haar_y[105], x-11, y+66, 22, 52);
	HaarXtYtO(inner_haar_x[106], inner_haar_y[106], x, y+55, 22, 53, ori_weight[9]);
	HaarXtYt(inner_haar_x[107], inner_haar_y[107], x-11, y+77, 22, 53);
	HaarXtYtO(inner_haar_x[108], inner_haar_y[108], x, y+44, 22, 54, ori_weight[5]);
	HaarXtYt(inner_haar_x[109], inner_haar_y[109], x, y+88, 22, 54);
	HaarXtYtO(inner_haar_x[110], inner_haar_y[110], x, y+66, 22, 55, ori_weight[12]);
	HaarXtYt(inner_haar_x[111], inner_haar_y[111], x+11, y+77, 22, 55);
	HaarXtYt(inner_haar_x[112], inner_haar_y[112], x+11, y+66, 22, 56);
	HaarXtYtO(inner_haar_x[113], inner_haar_y[113], x+11, y+55, 22, 56, ori_weight[10]);
	HaarXtYtO(inner_haar_x[114], inner_haar_y[114], x+11, y+44, 22, 57, ori_weight[6]);
	HaarXtYt(inner_haar_x[115], inner_haar_y[115], x+22, y+77, 22, 57);
	HaarXtYtO(inner_haar_x[116], inner_haar_y[116], x+11, y+33, 22, 58, ori_weight[3]);
	HaarXtYt(inner_haar_x[117], inner_haar_y[117], x+22, y+66, 22, 58);
	HaarXtYt(inner_haar_x[118], inner_haar_y[118], x+33, y+77, 22, 59);
	HaarXtYtO(inner_haar_x[119], inner_haar_y[119], x+22, y+44, 22, 59, ori_weight[8]);
	HaarXtYt(inner_haar_x[120], inner_haar_y[120], x+33, y+66, 22, 60);
	HaarXtYtO(inner_haar_x[121], inner_haar_y[121], x+33, y+55, 22, 60, ori_weight[11]);
	HaarXtYtO(inner_haar_x[122], inner_haar_y[122], x+22, y+33, 22, 61, ori_weight[4]);
	HaarXtYt(inner_haar_x[123], inner_haar_y[123], x+44, y+66, 22, 61);
	HaarXtYt(inner_haar_x[124], inner_haar_y[124], x+44, y+55, 22, 62);
	HaarXtYt(inner_haar_x[125], inner_haar_y[125], x+55, y+66, 22, 62);
	HaarXtYtO(inner_haar_x[126], inner_haar_y[126], x+33, y+33, 22, 63, ori_weight[7]);
	HaarXtYt(inner_haar_x[127], inner_haar_y[127], x+55, y+55, 22, 63);
	HaarXtYt(inner_haar_x[128], inner_haar_y[128], x+66, y+55, 22, 64);
	HaarXtYt(inner_haar_x[129], inner_haar_y[129], x+55, y+44, 22, 64);
	HaarXtYtO(inner_haar_x[130], inner_haar_y[130], x+33, y+22, 22, 65, ori_weight[4]);
	HaarXtYt(inner_haar_x[131], inner_haar_y[131], x+66, y+44, 22, 65);
	HaarXtYtO(inner_haar_x[132], inner_haar_y[132], x+55, y+33, 22, 66, ori_weight[11]);
	HaarXtYt(inner_haar_x[133], inner_haar_y[133], x+66, y+33, 22, 66);
	HaarXtYtO(inner_haar_x[134], inner_haar_y[134], x+44, y+22, 22, 67, ori_weight[8]);
	HaarXtYt(inner_haar_x[135], inner_haar_y[135], x+77, y+33, 22, 67);
	HaarXtYtO(inner_haar_x[136], inner_haar_y[136], x+33, y+11, 22, 68, ori_weight[3]);
	HaarXtYt(inner_haar_x[137], inner_haar_y[137], x+66, y+22, 22, 68);
	HaarXtYt(inner_haar_x[138], inner_haar_y[138], x+77, y+22, 22, 69);
	HaarXtYtO(inner_haar_x[139], inner_haar_y[139], x+44, y+11, 22, 69, ori_weight[6]);
	HaarXtYtO(inner_haar_x[140], inner_haar_y[140], x+55, y+11, 22, 70, ori_weight[10]);
	HaarXtYt(inner_haar_x[141], inner_haar_y[141], x+66, y+11, 22, 70);
	HaarXtYtO(inner_haar_x[142], inner_haar_y[142], x+66, y, 22, 71, ori_weight[12]);
	HaarXtYt(inner_haar_x[143], inner_haar_y[143], x+77, y+11, 22, 71);

	HaarXtYt(outer_haar_x[0], outer_haar_y[0], x+99, y, 22, 0);
	HaarXtYt(outer_haar_x[1], outer_haar_y[1], x+132, y, 22, 0);
	HaarXtYt(outer_haar_x[2], outer_haar_y[2], x+165, y, 22, 0);
	HaarXtYt(outer_haar_x[3], outer_haar_y[3], x+154, y-11, 22, 1);
	HaarXtYt(outer_haar_x[4], outer_haar_y[4], x+121, y-11, 22, 1);
	HaarXtYt(outer_haar_x[5], outer_haar_y[5], x+88, y-11, 22, 1);
	HaarXtYt(outer_haar_x[6], outer_haar_y[6], x+132, y-22, 22, 2);
	HaarXtYt(outer_haar_x[7], outer_haar_y[7], x+110, y-22, 22, 2);
	HaarXtYt(outer_haar_x[8], outer_haar_y[8], x+154, y-33, 22, 2);
	HaarXtYt(outer_haar_x[9], outer_haar_y[9], x+88, y-22, 22, 3);
	HaarXtYt(outer_haar_x[10], outer_haar_y[10], x+121, y-33, 22, 3);
	HaarXtYt(outer_haar_x[11], outer_haar_y[11], x+154, y-44, 22, 3);
	HaarXtYt(outer_haar_x[12], outer_haar_y[12], x+154, y-55, 22, 4);
	HaarXtYt(outer_haar_x[13], outer_haar_y[13], x+121, y-44, 22, 4);
	HaarXtYt(outer_haar_x[14], outer_haar_y[14], x+88, y-33, 22, 4);
	HaarXtYt(outer_haar_x[15], outer_haar_y[15], x+143, y-66, 22, 5);
	HaarXtYt(outer_haar_x[16], outer_haar_y[16], x+88, y-44, 22, 5);
	HaarXtYt(outer_haar_x[17], outer_haar_y[17], x+110, y-55, 22, 5);
	HaarXtYt(outer_haar_x[18], outer_haar_y[18], x+143, y-77, 22, 6);
	HaarXtYt(outer_haar_x[19], outer_haar_y[19], x+77, y-44, 22, 6);
	HaarXtYt(outer_haar_x[20], outer_haar_y[20], x+110, y-66, 22, 6);
	HaarXtYt(outer_haar_x[21], outer_haar_y[21], x+110, y-77, 22, 7);
	HaarXtYt(outer_haar_x[22], outer_haar_y[22], x+77, y-55, 22, 7);
	HaarXtYt(outer_haar_x[23], outer_haar_y[23], x+132, y-99, 22, 7);
	HaarXtYt(outer_haar_x[24], outer_haar_y[24], x+77, y-66, 22, 8);
	HaarXtYt(outer_haar_x[25], outer_haar_y[25], x+99, y-88, 22, 8);
	HaarXtYt(outer_haar_x[26], outer_haar_y[26], x+121, y-110, 22, 8);
	HaarXtYt(outer_haar_x[27], outer_haar_y[27], x+66, y-66, 22, 9);
	HaarXtYt(outer_haar_x[28], outer_haar_y[28], x+88, y-88, 22, 9);
	HaarXtYt(outer_haar_x[29], outer_haar_y[29], x+110, y-110, 22, 9);
	HaarXtYt(outer_haar_x[30], outer_haar_y[30], x+110, y-121, 22, 10);
	HaarXtYt(outer_haar_x[31], outer_haar_y[31], x+88, y-99, 22, 10);
	HaarXtYt(outer_haar_x[32], outer_haar_y[32], x+66, y-77, 22, 10);
	HaarXtYt(outer_haar_x[33], outer_haar_y[33], x+99, y-132, 22, 11);
	HaarXtYt(outer_haar_x[34], outer_haar_y[34], x+55, y-77, 22, 11);
	HaarXtYt(outer_haar_x[35], outer_haar_y[35], x+77, y-110, 22, 11);
	HaarXtYt(outer_haar_x[36], outer_haar_y[36], x+66, y-110, 22, 12);
	HaarXtYt(outer_haar_x[37], outer_haar_y[37], x+44, y-77, 22, 12);
	HaarXtYt(outer_haar_x[38], outer_haar_y[38], x+77, y-143, 22, 12);
	HaarXtYt(outer_haar_x[39], outer_haar_y[39], x+44, y-88, 22, 13);
	HaarXtYt(outer_haar_x[40], outer_haar_y[40], x+55, y-110, 22, 13);
	HaarXtYt(outer_haar_x[41], outer_haar_y[41], x+66, y-143, 22, 13);
	HaarXtYt(outer_haar_x[42], outer_haar_y[42], x+33, y-88, 22, 14);
	HaarXtYt(outer_haar_x[43], outer_haar_y[43], x+44, y-121, 22, 14);
	HaarXtYt(outer_haar_x[44], outer_haar_y[44], x+55, y-154, 22, 14);
	HaarXtYt(outer_haar_x[45], outer_haar_y[45], x+44, y-154, 22, 15);
	HaarXtYt(outer_haar_x[46], outer_haar_y[46], x+33, y-121, 22, 15);
	HaarXtYt(outer_haar_x[47], outer_haar_y[47], x+22, y-88, 22, 15);
	HaarXtYt(outer_haar_x[48], outer_haar_y[48], x+33, y-154, 22, 16);
	HaarXtYt(outer_haar_x[49], outer_haar_y[49], x+22, y-110, 22, 16);
	HaarXtYt(outer_haar_x[50], outer_haar_y[50], x+22, y-132, 22, 16);
	HaarXtYt(outer_haar_x[51], outer_haar_y[51], x+11, y-88, 22, 17);
	HaarXtYt(outer_haar_x[52], outer_haar_y[52], x+11, y-121, 22, 17);
	HaarXtYt(outer_haar_x[53], outer_haar_y[53], x+11, y-154, 22, 17);
	HaarXtYt(outer_haar_x[54], outer_haar_y[54], x, y-99, 22, 18);
	HaarXtYt(outer_haar_x[55], outer_haar_y[55], x, y-132, 22, 18);
	HaarXtYt(outer_haar_x[56], outer_haar_y[56], x, y-165, 22, 18);
	HaarXtYt(outer_haar_x[57], outer_haar_y[57], x-11, y-154, 22, 19);
	HaarXtYt(outer_haar_x[58], outer_haar_y[58], x-11, y-121, 22, 19);
	HaarXtYt(outer_haar_x[59], outer_haar_y[59], x-11, y-88, 22, 19);
	HaarXtYt(outer_haar_x[60], outer_haar_y[60], x-22, y-132, 22, 20);
	HaarXtYt(outer_haar_x[61], outer_haar_y[61], x-22, y-110, 22, 20);
	HaarXtYt(outer_haar_x[62], outer_haar_y[62], x-33, y-154, 22, 20);
	HaarXtYt(outer_haar_x[63], outer_haar_y[63], x-22, y-88, 22, 21);
	HaarXtYt(outer_haar_x[64], outer_haar_y[64], x-33, y-121, 22, 21);
	HaarXtYt(outer_haar_x[65], outer_haar_y[65], x-44, y-154, 22, 21);
	HaarXtYt(outer_haar_x[66], outer_haar_y[66], x-55, y-154, 22, 22);
	HaarXtYt(outer_haar_x[67], outer_haar_y[67], x-44, y-121, 22, 22);
	HaarXtYt(outer_haar_x[68], outer_haar_y[68], x-33, y-88, 22, 22);
	HaarXtYt(outer_haar_x[69], outer_haar_y[69], x-66, y-143, 22, 23);
	HaarXtYt(outer_haar_x[70], outer_haar_y[70], x-44, y-88, 22, 23);
	HaarXtYt(outer_haar_x[71], outer_haar_y[71], x-55, y-110, 22, 23);
	HaarXtYt(outer_haar_x[72], outer_haar_y[72], x-77, y-143, 22, 24);
	HaarXtYt(outer_haar_x[73], outer_haar_y[73], x-44, y-77, 22, 24);
	HaarXtYt(outer_haar_x[74], outer_haar_y[74], x-66, y-110, 22, 24);
	HaarXtYt(outer_haar_x[75], outer_haar_y[75], x-77, y-110, 22, 25);
	HaarXtYt(outer_haar_x[76], outer_haar_y[76], x-55, y-77, 22, 25);
	HaarXtYt(outer_haar_x[77], outer_haar_y[77], x-99, y-132, 22, 25);
	HaarXtYt(outer_haar_x[78], outer_haar_y[78], x-66, y-77, 22, 26);
	HaarXtYt(outer_haar_x[79], outer_haar_y[79], x-88, y-99, 22, 26);
	HaarXtYt(outer_haar_x[80], outer_haar_y[80], x-110, y-121, 22, 26);
	HaarXtYt(outer_haar_x[81], outer_haar_y[81], x-66, y-66, 22, 27);
	HaarXtYt(outer_haar_x[82], outer_haar_y[82], x-88, y-88, 22, 27);
	HaarXtYt(outer_haar_x[83], outer_haar_y[83], x-110, y-110, 22, 27);
	HaarXtYt(outer_haar_x[84], outer_haar_y[84], x-121, y-110, 22, 28);
	HaarXtYt(outer_haar_x[85], outer_haar_y[85], x-99, y-88, 22, 28);
	HaarXtYt(outer_haar_x[86], outer_haar_y[86], x-77, y-66, 22, 28);
	HaarXtYt(outer_haar_x[87], outer_haar_y[87], x-132, y-99, 22, 29);
	HaarXtYt(outer_haar_x[88], outer_haar_y[88], x-77, y-55, 22, 29);
	HaarXtYt(outer_haar_x[89], outer_haar_y[89], x-110, y-77, 22, 29);
	HaarXtYt(outer_haar_x[90], outer_haar_y[90], x-110, y-66, 22, 30);
	HaarXtYt(outer_haar_x[91], outer_haar_y[91], x-77, y-44, 22, 30);
	HaarXtYt(outer_haar_x[92], outer_haar_y[92], x-143, y-77, 22, 30);
	HaarXtYt(outer_haar_x[93], outer_haar_y[93], x-88, y-44, 22, 31);
	HaarXtYt(outer_haar_x[94], outer_haar_y[94], x-110, y-55, 22, 31);
	HaarXtYt(outer_haar_x[95], outer_haar_y[95], x-143, y-66, 22, 31);
	HaarXtYt(outer_haar_x[96], outer_haar_y[96], x-88, y-33, 22, 32);
	HaarXtYt(outer_haar_x[97], outer_haar_y[97], x-121, y-44, 22, 32);
	HaarXtYt(outer_haar_x[98], outer_haar_y[98], x-154, y-55, 22, 32);
	HaarXtYt(outer_haar_x[99], outer_haar_y[99], x-154, y-44, 22, 33);
	HaarXtYt(outer_haar_x[100], outer_haar_y[100], x-121, y-33, 22, 33);
	HaarXtYt(outer_haar_x[101], outer_haar_y[101], x-88, y-22, 22, 33);
	HaarXtYt(outer_haar_x[102], outer_haar_y[102], x-154, y-33, 22, 34);
	HaarXtYt(outer_haar_x[103], outer_haar_y[103], x-110, y-22, 22, 34);
	HaarXtYt(outer_haar_x[104], outer_haar_y[104], x-132, y-22, 22, 34);
	HaarXtYt(outer_haar_x[105], outer_haar_y[105], x-88, y-11, 22, 35);
	HaarXtYt(outer_haar_x[106], outer_haar_y[106], x-121, y-11, 22, 35);
	HaarXtYt(outer_haar_x[107], outer_haar_y[107], x-154, y-11, 22, 35);
	HaarXtYt(outer_haar_x[108], outer_haar_y[108], x-99, y, 22, 36);
	HaarXtYt(outer_haar_x[109], outer_haar_y[109], x-132, y, 22, 36);
	HaarXtYt(outer_haar_x[110], outer_haar_y[110], x-165, y, 22, 36);
	HaarXtYt(outer_haar_x[111], outer_haar_y[111], x-154, y+11, 22, 37);
	HaarXtYt(outer_haar_x[112], outer_haar_y[112], x-121, y+11, 22, 37);
	HaarXtYt(outer_haar_x[113], outer_haar_y[113], x-88, y+11, 22, 37);
	HaarXtYt(outer_haar_x[114], outer_haar_y[114], x-132, y+22, 22, 38);
	HaarXtYt(outer_haar_x[115], outer_haar_y[115], x-110, y+22, 22, 38);
	HaarXtYt(outer_haar_x[116], outer_haar_y[116], x-154, y+33, 22, 38);
	HaarXtYt(outer_haar_x[117], outer_haar_y[117], x-88, y+22, 22, 39);
	HaarXtYt(outer_haar_x[118], outer_haar_y[118], x-121, y+33, 22, 39);
	HaarXtYt(outer_haar_x[119], outer_haar_y[119], x-154, y+44, 22, 39);
	HaarXtYt(outer_haar_x[120], outer_haar_y[120], x-154, y+55, 22, 40);
	HaarXtYt(outer_haar_x[121], outer_haar_y[121], x-121, y+44, 22, 40);
	HaarXtYt(outer_haar_x[122], outer_haar_y[122], x-88, y+33, 22, 40);
	HaarXtYt(outer_haar_x[123], outer_haar_y[123], x-143, y+66, 22, 41);
	HaarXtYt(outer_haar_x[124], outer_haar_y[124], x-88, y+44, 22, 41);
	HaarXtYt(outer_haar_x[125], outer_haar_y[125], x-110, y+55, 22, 41);
	HaarXtYt(outer_haar_x[126], outer_haar_y[126], x-143, y+77, 22, 42);
	HaarXtYt(outer_haar_x[127], outer_haar_y[127], x-77, y+44, 22, 42);
	HaarXtYt(outer_haar_x[128], outer_haar_y[128], x-110, y+66, 22, 42);
	HaarXtYt(outer_haar_x[129], outer_haar_y[129], x-110, y+77, 22, 43);
	HaarXtYt(outer_haar_x[130], outer_haar_y[130], x-77, y+55, 22, 43);
	HaarXtYt(outer_haar_x[131], outer_haar_y[131], x-132, y+99, 22, 43);
	HaarXtYt(outer_haar_x[132], outer_haar_y[132], x-77, y+66, 22, 44);
	HaarXtYt(outer_haar_x[133], outer_haar_y[133], x-99, y+88, 22, 44);
	HaarXtYt(outer_haar_x[134], outer_haar_y[134], x-121, y+110, 22, 44);
	HaarXtYt(outer_haar_x[135], outer_haar_y[135], x-66, y+66, 22, 45);
	HaarXtYt(outer_haar_x[136], outer_haar_y[136], x-88, y+88, 22, 45);
	HaarXtYt(outer_haar_x[137], outer_haar_y[137], x-110, y+110, 22, 45);
	HaarXtYt(outer_haar_x[138], outer_haar_y[138], x-110, y+121, 22, 46);
	HaarXtYt(outer_haar_x[139], outer_haar_y[139], x-88, y+99, 22, 46);
	HaarXtYt(outer_haar_x[140], outer_haar_y[140], x-66, y+77, 22, 46);
	HaarXtYt(outer_haar_x[141], outer_haar_y[141], x-99, y+132, 22, 47);
	HaarXtYt(outer_haar_x[142], outer_haar_y[142], x-55, y+77, 22, 47);
	HaarXtYt(outer_haar_x[143], outer_haar_y[143], x-77, y+110, 22, 47);
	HaarXtYt(outer_haar_x[144], outer_haar_y[144], x-66, y+110, 22, 48);
	HaarXtYt(outer_haar_x[145], outer_haar_y[145], x-44, y+77, 22, 48);
	HaarXtYt(outer_haar_x[146], outer_haar_y[146], x-77, y+143, 22, 48);
	HaarXtYt(outer_haar_x[147], outer_haar_y[147], x-44, y+88, 22, 49);
	HaarXtYt(outer_haar_x[148], outer_haar_y[148], x-55, y+110, 22, 49);
	HaarXtYt(outer_haar_x[149], outer_haar_y[149], x-66, y+143, 22, 49);
	HaarXtYt(outer_haar_x[150], outer_haar_y[150], x-33, y+88, 22, 50);
	HaarXtYt(outer_haar_x[151], outer_haar_y[151], x-44, y+121, 22, 50);
	HaarXtYt(outer_haar_x[152], outer_haar_y[152], x-55, y+154, 22, 50);
	HaarXtYt(outer_haar_x[153], outer_haar_y[153], x-44, y+154, 22, 51);
	HaarXtYt(outer_haar_x[154], outer_haar_y[154], x-33, y+121, 22, 51);
	HaarXtYt(outer_haar_x[155], outer_haar_y[155], x-22, y+88, 22, 51);
	HaarXtYt(outer_haar_x[156], outer_haar_y[156], x-33, y+154, 22, 52);
	HaarXtYt(outer_haar_x[157], outer_haar_y[157], x-22, y+110, 22, 52);
	HaarXtYt(outer_haar_x[158], outer_haar_y[158], x-22, y+132, 22, 52);
	HaarXtYt(outer_haar_x[159], outer_haar_y[159], x-11, y+88, 22, 53);
	HaarXtYt(outer_haar_x[160], outer_haar_y[160], x-11, y+121, 22, 53);
	HaarXtYt(outer_haar_x[161], outer_haar_y[161], x-11, y+154, 22, 53);
	HaarXtYt(outer_haar_x[162], outer_haar_y[162], x, y+99, 22, 54);
	HaarXtYt(outer_haar_x[163], outer_haar_y[163], x, y+132, 22, 54);
	HaarXtYt(outer_haar_x[164], outer_haar_y[164], x, y+165, 22, 54);
	HaarXtYt(outer_haar_x[165], outer_haar_y[165], x+11, y+154, 22, 55);
	HaarXtYt(outer_haar_x[166], outer_haar_y[166], x+11, y+121, 22, 55);
	HaarXtYt(outer_haar_x[167], outer_haar_y[167], x+11, y+88, 22, 55);
	HaarXtYt(outer_haar_x[168], outer_haar_y[168], x+22, y+132, 22, 56);
	HaarXtYt(outer_haar_x[169], outer_haar_y[169], x+22, y+110, 22, 56);
	HaarXtYt(outer_haar_x[170], outer_haar_y[170], x+33, y+154, 22, 56);
	HaarXtYt(outer_haar_x[171], outer_haar_y[171], x+22, y+88, 22, 57);
	HaarXtYt(outer_haar_x[172], outer_haar_y[172], x+33, y+121, 22, 57);
	HaarXtYt(outer_haar_x[173], outer_haar_y[173], x+44, y+154, 22, 57);
	HaarXtYt(outer_haar_x[174], outer_haar_y[174], x+55, y+154, 22, 58);
	HaarXtYt(outer_haar_x[175], outer_haar_y[175], x+44, y+121, 22, 58);
	HaarXtYt(outer_haar_x[176], outer_haar_y[176], x+33, y+88, 22, 58);
	HaarXtYt(outer_haar_x[177], outer_haar_y[177], x+66, y+143, 22, 59);
	HaarXtYt(outer_haar_x[178], outer_haar_y[178], x+44, y+88, 22, 59);
	HaarXtYt(outer_haar_x[179], outer_haar_y[179], x+55, y+110, 22, 59);
	HaarXtYt(outer_haar_x[180], outer_haar_y[180], x+77, y+143, 22, 60);
	HaarXtYt(outer_haar_x[181], outer_haar_y[181], x+44, y+77, 22, 60);
	HaarXtYt(outer_haar_x[182], outer_haar_y[182], x+66, y+110, 22, 60);
	HaarXtYt(outer_haar_x[183], outer_haar_y[183], x+77, y+110, 22, 61);
	HaarXtYt(outer_haar_x[184], outer_haar_y[184], x+55, y+77, 22, 61);
	HaarXtYt(outer_haar_x[185], outer_haar_y[185], x+99, y+132, 22, 61);
	HaarXtYt(outer_haar_x[186], outer_haar_y[186], x+66, y+77, 22, 62);
	HaarXtYt(outer_haar_x[187], outer_haar_y[187], x+88, y+99, 22, 62);
	HaarXtYt(outer_haar_x[188], outer_haar_y[188], x+110, y+121, 22, 62);
	HaarXtYt(outer_haar_x[189], outer_haar_y[189], x+66, y+66, 22, 63);
	HaarXtYt(outer_haar_x[190], outer_haar_y[190], x+88, y+88, 22, 63);
	HaarXtYt(outer_haar_x[191], outer_haar_y[191], x+110, y+110, 22, 63);
	HaarXtYt(outer_haar_x[192], outer_haar_y[192], x+121, y+110, 22, 64);
	HaarXtYt(outer_haar_x[193], outer_haar_y[193], x+99, y+88, 22, 64);
	HaarXtYt(outer_haar_x[194], outer_haar_y[194], x+77, y+66, 22, 64);
	HaarXtYt(outer_haar_x[195], outer_haar_y[195], x+132, y+99, 22, 65);
	HaarXtYt(outer_haar_x[196], outer_haar_y[196], x+77, y+55, 22, 65);
	HaarXtYt(outer_haar_x[197], outer_haar_y[197], x+110, y+77, 22, 65);
	HaarXtYt(outer_haar_x[198], outer_haar_y[198], x+110, y+66, 22, 66);
	HaarXtYt(outer_haar_x[199], outer_haar_y[199], x+77, y+44, 22, 66);
	HaarXtYt(outer_haar_x[200], outer_haar_y[200], x+143, y+77, 22, 66);
	HaarXtYt(outer_haar_x[201], outer_haar_y[201], x+88, y+44, 22, 67);
	HaarXtYt(outer_haar_x[202], outer_haar_y[202], x+110, y+55, 22, 67);
	HaarXtYt(outer_haar_x[203], outer_haar_y[203], x+143, y+66, 22, 67);
	HaarXtYt(outer_haar_x[204], outer_haar_y[204], x+88, y+33, 22, 68);
	HaarXtYt(outer_haar_x[205], outer_haar_y[205], x+121, y+44, 22, 68);
	HaarXtYt(outer_haar_x[206], outer_haar_y[206], x+154, y+55, 22, 68);
	HaarXtYt(outer_haar_x[207], outer_haar_y[207], x+154, y+44, 22, 69);
	HaarXtYt(outer_haar_x[208], outer_haar_y[208], x+121, y+33, 22, 69);
	HaarXtYt(outer_haar_x[209], outer_haar_y[209], x+88, y+22, 22, 69);
	HaarXtYt(outer_haar_x[210], outer_haar_y[210], x+154, y+33, 22, 70);
	HaarXtYt(outer_haar_x[211], outer_haar_y[211], x+110, y+22, 22, 70);
	HaarXtYt(outer_haar_x[212], outer_haar_y[212], x+132, y+22, 22, 70);
	HaarXtYt(outer_haar_x[213], outer_haar_y[213], x+88, y+11, 22, 71);
	HaarXtYt(outer_haar_x[214], outer_haar_y[214], x+121, y+11, 22, 71);
	HaarXtYt(outer_haar_x[215], outer_haar_y[215], x+154, y+11, 22, 71);
}

void Scarf::DescriptorResponsesGen12(int x, int y)
{
	ZeroOrientation();

	HaarXYO(center_haar_x[0], center_haar_y[0], x-12, y, 24, ori_weight[0]);
	HaarXYO(center_haar_x[1], center_haar_y[1], x, y+12, 24, ori_weight[0]);
	HaarXYO(center_haar_x[2], center_haar_y[2], x, y-12, 24, ori_weight[0]);
	HaarXYO(center_haar_x[3], center_haar_y[3], x+12, y, 24, ori_weight[0]);
	HaarXYO(center_haar_x[4], center_haar_y[4], x-24, y+12, 24, ori_weight[1]);
	HaarXYO(center_haar_x[5], center_haar_y[5], x-24, y-12, 24, ori_weight[1]);
	HaarXYO(center_haar_x[6], center_haar_y[6], x-12, y+24, 24, ori_weight[1]);
	HaarXYO(center_haar_x[7], center_haar_y[7], x-12, y-24, 24, ori_weight[1]);
	HaarXYO(center_haar_x[8], center_haar_y[8], x+12, y+24, 24, ori_weight[1]);
	HaarXYO(center_haar_x[9], center_haar_y[9], x+12, y-24, 24, ori_weight[1]);
	HaarXYO(center_haar_x[10], center_haar_y[10], x+24, y+12, 24, ori_weight[1]);
	HaarXYO(center_haar_x[11], center_haar_y[11], x+24, y-12, 24, ori_weight[1]);
	HaarXYO(center_haar_x[12], center_haar_y[12], x-36, y, 24, ori_weight[2]);
	HaarXYO(center_haar_x[13], center_haar_y[13], x, y+36, 24, ori_weight[2]);
	HaarXYO(center_haar_x[14], center_haar_y[14], x, y-36, 24, ori_weight[2]);
	HaarXYO(center_haar_x[15], center_haar_y[15], x+36, y, 24, ori_weight[2]);

	HaarXtYtO(inner_haar_x[0], inner_haar_y[0], x+48, y, 24, 0, ori_weight[5]);
	HaarXtYt(inner_haar_x[1], inner_haar_y[1], x+96, y, 24, 0);
	HaarXtYtO(inner_haar_x[2], inner_haar_y[2], x+60, y, 24, 1, ori_weight[9]);
	HaarXtYt(inner_haar_x[3], inner_haar_y[3], x+84, y-12, 24, 1);
	HaarXtYt(inner_haar_x[4], inner_haar_y[4], x+72, y-12, 24, 2);
	HaarXtYtO(inner_haar_x[5], inner_haar_y[5], x+60, y-12, 24, 2, ori_weight[10]);
	HaarXtYtO(inner_haar_x[6], inner_haar_y[6], x+48, y-12, 24, 3, ori_weight[6]);
	HaarXtYt(inner_haar_x[7], inner_haar_y[7], x+84, y-24, 24, 3);
	HaarXtYtO(inner_haar_x[8], inner_haar_y[8], x+36, y-12, 24, 4, ori_weight[3]);
	HaarXtYt(inner_haar_x[9], inner_haar_y[9], x+72, y-24, 24, 4);
	HaarXtYt(inner_haar_x[10], inner_haar_y[10], x+84, y-36, 24, 5);
	HaarXtYtO(inner_haar_x[11], inner_haar_y[11], x+48, y-24, 24, 5, ori_weight[8]);
	HaarXtYt(inner_haar_x[12], inner_haar_y[12], x+72, y-36, 24, 6);
	HaarXtYtO(inner_haar_x[13], inner_haar_y[13], x+60, y-36, 24, 6, ori_weight[11]);
	HaarXtYtO(inner_haar_x[14], inner_haar_y[14], x+36, y-24, 24, 7, ori_weight[4]);
	HaarXtYt(inner_haar_x[15], inner_haar_y[15], x+72, y-48, 24, 7);
	HaarXtYt(inner_haar_x[16], inner_haar_y[16], x+60, y-48, 24, 8);
	HaarXtYt(inner_haar_x[17], inner_haar_y[17], x+72, y-60, 24, 8);
	HaarXtYtO(inner_haar_x[18], inner_haar_y[18], x+36, y-36, 24, 9, ori_weight[7]);
	HaarXtYt(inner_haar_x[19], inner_haar_y[19], x+60, y-60, 24, 9);
	HaarXtYt(inner_haar_x[20], inner_haar_y[20], x+60, y-72, 24, 10);
	HaarXtYt(inner_haar_x[21], inner_haar_y[21], x+48, y-60, 24, 10);
	HaarXtYtO(inner_haar_x[22], inner_haar_y[22], x+24, y-36, 24, 11, ori_weight[4]);
	HaarXtYt(inner_haar_x[23], inner_haar_y[23], x+48, y-72, 24, 11);
	HaarXtYtO(inner_haar_x[24], inner_haar_y[24], x+36, y-60, 24, 12, ori_weight[11]);
	HaarXtYt(inner_haar_x[25], inner_haar_y[25], x+36, y-72, 24, 12);
	HaarXtYtO(inner_haar_x[26], inner_haar_y[26], x+24, y-48, 24, 13, ori_weight[8]);
	HaarXtYt(inner_haar_x[27], inner_haar_y[27], x+36, y-84, 24, 13);
	HaarXtYtO(inner_haar_x[28], inner_haar_y[28], x+12, y-36, 24, 14, ori_weight[3]);
	HaarXtYt(inner_haar_x[29], inner_haar_y[29], x+24, y-72, 24, 14);
	HaarXtYt(inner_haar_x[30], inner_haar_y[30], x+24, y-84, 24, 15);
	HaarXtYtO(inner_haar_x[31], inner_haar_y[31], x+12, y-48, 24, 15, ori_weight[6]);
	HaarXtYtO(inner_haar_x[32], inner_haar_y[32], x+12, y-60, 24, 16, ori_weight[10]);
	HaarXtYt(inner_haar_x[33], inner_haar_y[33], x+12, y-72, 24, 16);
	HaarXtYtO(inner_haar_x[34], inner_haar_y[34], x, y-60, 24, 17, ori_weight[9]);
	HaarXtYt(inner_haar_x[35], inner_haar_y[35], x+12, y-84, 24, 17);
	HaarXtYtO(inner_haar_x[36], inner_haar_y[36], x, y-48, 24, 18, ori_weight[5]);
	HaarXtYt(inner_haar_x[37], inner_haar_y[37], x, y-96, 24, 18);
	HaarXtYtO(inner_haar_x[38], inner_haar_y[38], x, y-72, 24, 19, ori_weight[12]);
	HaarXtYt(inner_haar_x[39], inner_haar_y[39], x-12, y-84, 24, 19);
	HaarXtYt(inner_haar_x[40], inner_haar_y[40], x-12, y-72, 24, 20);
	HaarXtYtO(inner_haar_x[41], inner_haar_y[41], x-12, y-60, 24, 20, ori_weight[10]);
	HaarXtYtO(inner_haar_x[42], inner_haar_y[42], x-12, y-48, 24, 21, ori_weight[6]);
	HaarXtYt(inner_haar_x[43], inner_haar_y[43], x-24, y-84, 24, 21);
	HaarXtYtO(inner_haar_x[44], inner_haar_y[44], x-12, y-36, 24, 22, ori_weight[3]);
	HaarXtYt(inner_haar_x[45], inner_haar_y[45], x-24, y-72, 24, 22);
	HaarXtYt(inner_haar_x[46], inner_haar_y[46], x-36, y-84, 24, 23);
	HaarXtYtO(inner_haar_x[47], inner_haar_y[47], x-24, y-48, 24, 23, ori_weight[8]);
	HaarXtYt(inner_haar_x[48], inner_haar_y[48], x-36, y-72, 24, 24);
	HaarXtYtO(inner_haar_x[49], inner_haar_y[49], x-36, y-60, 24, 24, ori_weight[11]);
	HaarXtYtO(inner_haar_x[50], inner_haar_y[50], x-24, y-36, 24, 25, ori_weight[4]);
	HaarXtYt(inner_haar_x[51], inner_haar_y[51], x-48, y-72, 24, 25);
	HaarXtYt(inner_haar_x[52], inner_haar_y[52], x-48, y-60, 24, 26);
	HaarXtYt(inner_haar_x[53], inner_haar_y[53], x-60, y-72, 24, 26);
	HaarXtYtO(inner_haar_x[54], inner_haar_y[54], x-36, y-36, 24, 27, ori_weight[7]);
	HaarXtYt(inner_haar_x[55], inner_haar_y[55], x-60, y-60, 24, 27);
	HaarXtYt(inner_haar_x[56], inner_haar_y[56], x-72, y-60, 24, 28);
	HaarXtYt(inner_haar_x[57], inner_haar_y[57], x-60, y-48, 24, 28);
	HaarXtYtO(inner_haar_x[58], inner_haar_y[58], x-36, y-24, 24, 29, ori_weight[4]);
	HaarXtYt(inner_haar_x[59], inner_haar_y[59], x-72, y-48, 24, 29);
	HaarXtYtO(inner_haar_x[60], inner_haar_y[60], x-60, y-36, 24, 30, ori_weight[11]);
	HaarXtYt(inner_haar_x[61], inner_haar_y[61], x-72, y-36, 24, 30);
	HaarXtYtO(inner_haar_x[62], inner_haar_y[62], x-48, y-24, 24, 31, ori_weight[8]);
	HaarXtYt(inner_haar_x[63], inner_haar_y[63], x-84, y-36, 24, 31);
	HaarXtYtO(inner_haar_x[64], inner_haar_y[64], x-36, y-12, 24, 32, ori_weight[3]);
	HaarXtYt(inner_haar_x[65], inner_haar_y[65], x-72, y-24, 24, 32);
	HaarXtYt(inner_haar_x[66], inner_haar_y[66], x-84, y-24, 24, 33);
	HaarXtYtO(inner_haar_x[67], inner_haar_y[67], x-48, y-12, 24, 33, ori_weight[6]);
	HaarXtYtO(inner_haar_x[68], inner_haar_y[68], x-60, y-12, 24, 34, ori_weight[10]);
	HaarXtYt(inner_haar_x[69], inner_haar_y[69], x-72, y-12, 24, 34);
	HaarXtYtO(inner_haar_x[70], inner_haar_y[70], x-60, y, 24, 35, ori_weight[9]);
	HaarXtYt(inner_haar_x[71], inner_haar_y[71], x-84, y-12, 24, 35);
	HaarXtYtO(inner_haar_x[72], inner_haar_y[72], x-48, y, 24, 36, ori_weight[5]);
	HaarXtYt(inner_haar_x[73], inner_haar_y[73], x-96, y, 24, 36);
	HaarXtYtO(inner_haar_x[74], inner_haar_y[74], x-72, y, 24, 37, ori_weight[12]);
	HaarXtYt(inner_haar_x[75], inner_haar_y[75], x-84, y+12, 24, 37);
	HaarXtYt(inner_haar_x[76], inner_haar_y[76], x-72, y+12, 24, 38);
	HaarXtYtO(inner_haar_x[77], inner_haar_y[77], x-60, y+12, 24, 38, ori_weight[10]);
	HaarXtYtO(inner_haar_x[78], inner_haar_y[78], x-48, y+12, 24, 39, ori_weight[6]);
	HaarXtYt(inner_haar_x[79], inner_haar_y[79], x-84, y+24, 24, 39);
	HaarXtYtO(inner_haar_x[80], inner_haar_y[80], x-36, y+12, 24, 40, ori_weight[3]);
	HaarXtYt(inner_haar_x[81], inner_haar_y[81], x-72, y+24, 24, 40);
	HaarXtYt(inner_haar_x[82], inner_haar_y[82], x-84, y+36, 24, 41);
	HaarXtYtO(inner_haar_x[83], inner_haar_y[83], x-48, y+24, 24, 41, ori_weight[8]);
	HaarXtYt(inner_haar_x[84], inner_haar_y[84], x-72, y+36, 24, 42);
	HaarXtYtO(inner_haar_x[85], inner_haar_y[85], x-60, y+36, 24, 42, ori_weight[11]);
	HaarXtYtO(inner_haar_x[86], inner_haar_y[86], x-36, y+24, 24, 43, ori_weight[4]);
	HaarXtYt(inner_haar_x[87], inner_haar_y[87], x-72, y+48, 24, 43);
	HaarXtYt(inner_haar_x[88], inner_haar_y[88], x-60, y+48, 24, 44);
	HaarXtYt(inner_haar_x[89], inner_haar_y[89], x-72, y+60, 24, 44);
	HaarXtYtO(inner_haar_x[90], inner_haar_y[90], x-36, y+36, 24, 45, ori_weight[7]);
	HaarXtYt(inner_haar_x[91], inner_haar_y[91], x-60, y+60, 24, 45);
	HaarXtYt(inner_haar_x[92], inner_haar_y[92], x-60, y+72, 24, 46);
	HaarXtYt(inner_haar_x[93], inner_haar_y[93], x-48, y+60, 24, 46);
	HaarXtYtO(inner_haar_x[94], inner_haar_y[94], x-24, y+36, 24, 47, ori_weight[4]);
	HaarXtYt(inner_haar_x[95], inner_haar_y[95], x-48, y+72, 24, 47);
	HaarXtYtO(inner_haar_x[96], inner_haar_y[96], x-36, y+60, 24, 48, ori_weight[11]);
	HaarXtYt(inner_haar_x[97], inner_haar_y[97], x-36, y+72, 24, 48);
	HaarXtYtO(inner_haar_x[98], inner_haar_y[98], x-24, y+48, 24, 49, ori_weight[8]);
	HaarXtYt(inner_haar_x[99], inner_haar_y[99], x-36, y+84, 24, 49);
	HaarXtYtO(inner_haar_x[100], inner_haar_y[100], x-12, y+36, 24, 50, ori_weight[3]);
	HaarXtYt(inner_haar_x[101], inner_haar_y[101], x-24, y+72, 24, 50);
	HaarXtYt(inner_haar_x[102], inner_haar_y[102], x-24, y+84, 24, 51);
	HaarXtYtO(inner_haar_x[103], inner_haar_y[103], x-12, y+48, 24, 51, ori_weight[6]);
	HaarXtYtO(inner_haar_x[104], inner_haar_y[104], x-12, y+60, 24, 52, ori_weight[10]);
	HaarXtYt(inner_haar_x[105], inner_haar_y[105], x-12, y+72, 24, 52);
	HaarXtYtO(inner_haar_x[106], inner_haar_y[106], x, y+60, 24, 53, ori_weight[9]);
	HaarXtYt(inner_haar_x[107], inner_haar_y[107], x-12, y+84, 24, 53);
	HaarXtYtO(inner_haar_x[108], inner_haar_y[108], x, y+48, 24, 54, ori_weight[5]);
	HaarXtYt(inner_haar_x[109], inner_haar_y[109], x, y+96, 24, 54);
	HaarXtYtO(inner_haar_x[110], inner_haar_y[110], x, y+72, 24, 55, ori_weight[12]);
	HaarXtYt(inner_haar_x[111], inner_haar_y[111], x+12, y+84, 24, 55);
	HaarXtYt(inner_haar_x[112], inner_haar_y[112], x+12, y+72, 24, 56);
	HaarXtYtO(inner_haar_x[113], inner_haar_y[113], x+12, y+60, 24, 56, ori_weight[10]);
	HaarXtYtO(inner_haar_x[114], inner_haar_y[114], x+12, y+48, 24, 57, ori_weight[6]);
	HaarXtYt(inner_haar_x[115], inner_haar_y[115], x+24, y+84, 24, 57);
	HaarXtYtO(inner_haar_x[116], inner_haar_y[116], x+12, y+36, 24, 58, ori_weight[3]);
	HaarXtYt(inner_haar_x[117], inner_haar_y[117], x+24, y+72, 24, 58);
	HaarXtYt(inner_haar_x[118], inner_haar_y[118], x+36, y+84, 24, 59);
	HaarXtYtO(inner_haar_x[119], inner_haar_y[119], x+24, y+48, 24, 59, ori_weight[8]);
	HaarXtYt(inner_haar_x[120], inner_haar_y[120], x+36, y+72, 24, 60);
	HaarXtYtO(inner_haar_x[121], inner_haar_y[121], x+36, y+60, 24, 60, ori_weight[11]);
	HaarXtYtO(inner_haar_x[122], inner_haar_y[122], x+24, y+36, 24, 61, ori_weight[4]);
	HaarXtYt(inner_haar_x[123], inner_haar_y[123], x+48, y+72, 24, 61);
	HaarXtYt(inner_haar_x[124], inner_haar_y[124], x+48, y+60, 24, 62);
	HaarXtYt(inner_haar_x[125], inner_haar_y[125], x+60, y+72, 24, 62);
	HaarXtYtO(inner_haar_x[126], inner_haar_y[126], x+36, y+36, 24, 63, ori_weight[7]);
	HaarXtYt(inner_haar_x[127], inner_haar_y[127], x+60, y+60, 24, 63);
	HaarXtYt(inner_haar_x[128], inner_haar_y[128], x+72, y+60, 24, 64);
	HaarXtYt(inner_haar_x[129], inner_haar_y[129], x+60, y+48, 24, 64);
	HaarXtYtO(inner_haar_x[130], inner_haar_y[130], x+36, y+24, 24, 65, ori_weight[4]);
	HaarXtYt(inner_haar_x[131], inner_haar_y[131], x+72, y+48, 24, 65);
	HaarXtYtO(inner_haar_x[132], inner_haar_y[132], x+60, y+36, 24, 66, ori_weight[11]);
	HaarXtYt(inner_haar_x[133], inner_haar_y[133], x+72, y+36, 24, 66);
	HaarXtYtO(inner_haar_x[134], inner_haar_y[134], x+48, y+24, 24, 67, ori_weight[8]);
	HaarXtYt(inner_haar_x[135], inner_haar_y[135], x+84, y+36, 24, 67);
	HaarXtYtO(inner_haar_x[136], inner_haar_y[136], x+36, y+12, 24, 68, ori_weight[3]);
	HaarXtYt(inner_haar_x[137], inner_haar_y[137], x+72, y+24, 24, 68);
	HaarXtYt(inner_haar_x[138], inner_haar_y[138], x+84, y+24, 24, 69);
	HaarXtYtO(inner_haar_x[139], inner_haar_y[139], x+48, y+12, 24, 69, ori_weight[6]);
	HaarXtYtO(inner_haar_x[140], inner_haar_y[140], x+60, y+12, 24, 70, ori_weight[10]);
	HaarXtYt(inner_haar_x[141], inner_haar_y[141], x+72, y+12, 24, 70);
	HaarXtYtO(inner_haar_x[142], inner_haar_y[142], x+72, y, 24, 71, ori_weight[12]);
	HaarXtYt(inner_haar_x[143], inner_haar_y[143], x+84, y+12, 24, 71);

	HaarXtYt(outer_haar_x[0], outer_haar_y[0], x+108, y, 24, 0);
	HaarXtYt(outer_haar_x[1], outer_haar_y[1], x+144, y, 24, 0);
	HaarXtYt(outer_haar_x[2], outer_haar_y[2], x+180, y, 24, 0);
	HaarXtYt(outer_haar_x[3], outer_haar_y[3], x+168, y-12, 24, 1);
	HaarXtYt(outer_haar_x[4], outer_haar_y[4], x+132, y-12, 24, 1);
	HaarXtYt(outer_haar_x[5], outer_haar_y[5], x+96, y-12, 24, 1);
	HaarXtYt(outer_haar_x[6], outer_haar_y[6], x+144, y-24, 24, 2);
	HaarXtYt(outer_haar_x[7], outer_haar_y[7], x+120, y-24, 24, 2);
	HaarXtYt(outer_haar_x[8], outer_haar_y[8], x+168, y-36, 24, 2);
	HaarXtYt(outer_haar_x[9], outer_haar_y[9], x+96, y-24, 24, 3);
	HaarXtYt(outer_haar_x[10], outer_haar_y[10], x+132, y-36, 24, 3);
	HaarXtYt(outer_haar_x[11], outer_haar_y[11], x+168, y-48, 24, 3);
	HaarXtYt(outer_haar_x[12], outer_haar_y[12], x+168, y-60, 24, 4);
	HaarXtYt(outer_haar_x[13], outer_haar_y[13], x+132, y-48, 24, 4);
	HaarXtYt(outer_haar_x[14], outer_haar_y[14], x+96, y-36, 24, 4);
	HaarXtYt(outer_haar_x[15], outer_haar_y[15], x+156, y-72, 24, 5);
	HaarXtYt(outer_haar_x[16], outer_haar_y[16], x+96, y-48, 24, 5);
	HaarXtYt(outer_haar_x[17], outer_haar_y[17], x+120, y-60, 24, 5);
	HaarXtYt(outer_haar_x[18], outer_haar_y[18], x+156, y-84, 24, 6);
	HaarXtYt(outer_haar_x[19], outer_haar_y[19], x+84, y-48, 24, 6);
	HaarXtYt(outer_haar_x[20], outer_haar_y[20], x+120, y-72, 24, 6);
	HaarXtYt(outer_haar_x[21], outer_haar_y[21], x+120, y-84, 24, 7);
	HaarXtYt(outer_haar_x[22], outer_haar_y[22], x+84, y-60, 24, 7);
	HaarXtYt(outer_haar_x[23], outer_haar_y[23], x+144, y-108, 24, 7);
	HaarXtYt(outer_haar_x[24], outer_haar_y[24], x+84, y-72, 24, 8);
	HaarXtYt(outer_haar_x[25], outer_haar_y[25], x+108, y-96, 24, 8);
	HaarXtYt(outer_haar_x[26], outer_haar_y[26], x+132, y-120, 24, 8);
	HaarXtYt(outer_haar_x[27], outer_haar_y[27], x+72, y-72, 24, 9);
	HaarXtYt(outer_haar_x[28], outer_haar_y[28], x+96, y-96, 24, 9);
	HaarXtYt(outer_haar_x[29], outer_haar_y[29], x+120, y-120, 24, 9);
	HaarXtYt(outer_haar_x[30], outer_haar_y[30], x+120, y-132, 24, 10);
	HaarXtYt(outer_haar_x[31], outer_haar_y[31], x+96, y-108, 24, 10);
	HaarXtYt(outer_haar_x[32], outer_haar_y[32], x+72, y-84, 24, 10);
	HaarXtYt(outer_haar_x[33], outer_haar_y[33], x+108, y-144, 24, 11);
	HaarXtYt(outer_haar_x[34], outer_haar_y[34], x+60, y-84, 24, 11);
	HaarXtYt(outer_haar_x[35], outer_haar_y[35], x+84, y-120, 24, 11);
	HaarXtYt(outer_haar_x[36], outer_haar_y[36], x+72, y-120, 24, 12);
	HaarXtYt(outer_haar_x[37], outer_haar_y[37], x+48, y-84, 24, 12);
	HaarXtYt(outer_haar_x[38], outer_haar_y[38], x+84, y-156, 24, 12);
	HaarXtYt(outer_haar_x[39], outer_haar_y[39], x+48, y-96, 24, 13);
	HaarXtYt(outer_haar_x[40], outer_haar_y[40], x+60, y-120, 24, 13);
	HaarXtYt(outer_haar_x[41], outer_haar_y[41], x+72, y-156, 24, 13);
	HaarXtYt(outer_haar_x[42], outer_haar_y[42], x+36, y-96, 24, 14);
	HaarXtYt(outer_haar_x[43], outer_haar_y[43], x+48, y-132, 24, 14);
	HaarXtYt(outer_haar_x[44], outer_haar_y[44], x+60, y-168, 24, 14);
	HaarXtYt(outer_haar_x[45], outer_haar_y[45], x+48, y-168, 24, 15);
	HaarXtYt(outer_haar_x[46], outer_haar_y[46], x+36, y-132, 24, 15);
	HaarXtYt(outer_haar_x[47], outer_haar_y[47], x+24, y-96, 24, 15);
	HaarXtYt(outer_haar_x[48], outer_haar_y[48], x+36, y-168, 24, 16);
	HaarXtYt(outer_haar_x[49], outer_haar_y[49], x+24, y-120, 24, 16);
	HaarXtYt(outer_haar_x[50], outer_haar_y[50], x+24, y-144, 24, 16);
	HaarXtYt(outer_haar_x[51], outer_haar_y[51], x+12, y-96, 24, 17);
	HaarXtYt(outer_haar_x[52], outer_haar_y[52], x+12, y-132, 24, 17);
	HaarXtYt(outer_haar_x[53], outer_haar_y[53], x+12, y-168, 24, 17);
	HaarXtYt(outer_haar_x[54], outer_haar_y[54], x, y-108, 24, 18);
	HaarXtYt(outer_haar_x[55], outer_haar_y[55], x, y-144, 24, 18);
	HaarXtYt(outer_haar_x[56], outer_haar_y[56], x, y-180, 24, 18);
	HaarXtYt(outer_haar_x[57], outer_haar_y[57], x-12, y-168, 24, 19);
	HaarXtYt(outer_haar_x[58], outer_haar_y[58], x-12, y-132, 24, 19);
	HaarXtYt(outer_haar_x[59], outer_haar_y[59], x-12, y-96, 24, 19);
	HaarXtYt(outer_haar_x[60], outer_haar_y[60], x-24, y-144, 24, 20);
	HaarXtYt(outer_haar_x[61], outer_haar_y[61], x-24, y-120, 24, 20);
	HaarXtYt(outer_haar_x[62], outer_haar_y[62], x-36, y-168, 24, 20);
	HaarXtYt(outer_haar_x[63], outer_haar_y[63], x-24, y-96, 24, 21);
	HaarXtYt(outer_haar_x[64], outer_haar_y[64], x-36, y-132, 24, 21);
	HaarXtYt(outer_haar_x[65], outer_haar_y[65], x-48, y-168, 24, 21);
	HaarXtYt(outer_haar_x[66], outer_haar_y[66], x-60, y-168, 24, 22);
	HaarXtYt(outer_haar_x[67], outer_haar_y[67], x-48, y-132, 24, 22);
	HaarXtYt(outer_haar_x[68], outer_haar_y[68], x-36, y-96, 24, 22);
	HaarXtYt(outer_haar_x[69], outer_haar_y[69], x-72, y-156, 24, 23);
	HaarXtYt(outer_haar_x[70], outer_haar_y[70], x-48, y-96, 24, 23);
	HaarXtYt(outer_haar_x[71], outer_haar_y[71], x-60, y-120, 24, 23);
	HaarXtYt(outer_haar_x[72], outer_haar_y[72], x-84, y-156, 24, 24);
	HaarXtYt(outer_haar_x[73], outer_haar_y[73], x-48, y-84, 24, 24);
	HaarXtYt(outer_haar_x[74], outer_haar_y[74], x-72, y-120, 24, 24);
	HaarXtYt(outer_haar_x[75], outer_haar_y[75], x-84, y-120, 24, 25);
	HaarXtYt(outer_haar_x[76], outer_haar_y[76], x-60, y-84, 24, 25);
	HaarXtYt(outer_haar_x[77], outer_haar_y[77], x-108, y-144, 24, 25);
	HaarXtYt(outer_haar_x[78], outer_haar_y[78], x-72, y-84, 24, 26);
	HaarXtYt(outer_haar_x[79], outer_haar_y[79], x-96, y-108, 24, 26);
	HaarXtYt(outer_haar_x[80], outer_haar_y[80], x-120, y-132, 24, 26);
	HaarXtYt(outer_haar_x[81], outer_haar_y[81], x-72, y-72, 24, 27);
	HaarXtYt(outer_haar_x[82], outer_haar_y[82], x-96, y-96, 24, 27);
	HaarXtYt(outer_haar_x[83], outer_haar_y[83], x-120, y-120, 24, 27);
	HaarXtYt(outer_haar_x[84], outer_haar_y[84], x-132, y-120, 24, 28);
	HaarXtYt(outer_haar_x[85], outer_haar_y[85], x-108, y-96, 24, 28);
	HaarXtYt(outer_haar_x[86], outer_haar_y[86], x-84, y-72, 24, 28);
	HaarXtYt(outer_haar_x[87], outer_haar_y[87], x-144, y-108, 24, 29);
	HaarXtYt(outer_haar_x[88], outer_haar_y[88], x-84, y-60, 24, 29);
	HaarXtYt(outer_haar_x[89], outer_haar_y[89], x-120, y-84, 24, 29);
	HaarXtYt(outer_haar_x[90], outer_haar_y[90], x-120, y-72, 24, 30);
	HaarXtYt(outer_haar_x[91], outer_haar_y[91], x-84, y-48, 24, 30);
	HaarXtYt(outer_haar_x[92], outer_haar_y[92], x-156, y-84, 24, 30);
	HaarXtYt(outer_haar_x[93], outer_haar_y[93], x-96, y-48, 24, 31);
	HaarXtYt(outer_haar_x[94], outer_haar_y[94], x-120, y-60, 24, 31);
	HaarXtYt(outer_haar_x[95], outer_haar_y[95], x-156, y-72, 24, 31);
	HaarXtYt(outer_haar_x[96], outer_haar_y[96], x-96, y-36, 24, 32);
	HaarXtYt(outer_haar_x[97], outer_haar_y[97], x-132, y-48, 24, 32);
	HaarXtYt(outer_haar_x[98], outer_haar_y[98], x-168, y-60, 24, 32);
	HaarXtYt(outer_haar_x[99], outer_haar_y[99], x-168, y-48, 24, 33);
	HaarXtYt(outer_haar_x[100], outer_haar_y[100], x-132, y-36, 24, 33);
	HaarXtYt(outer_haar_x[101], outer_haar_y[101], x-96, y-24, 24, 33);
	HaarXtYt(outer_haar_x[102], outer_haar_y[102], x-168, y-36, 24, 34);
	HaarXtYt(outer_haar_x[103], outer_haar_y[103], x-120, y-24, 24, 34);
	HaarXtYt(outer_haar_x[104], outer_haar_y[104], x-144, y-24, 24, 34);
	HaarXtYt(outer_haar_x[105], outer_haar_y[105], x-96, y-12, 24, 35);
	HaarXtYt(outer_haar_x[106], outer_haar_y[106], x-132, y-12, 24, 35);
	HaarXtYt(outer_haar_x[107], outer_haar_y[107], x-168, y-12, 24, 35);
	HaarXtYt(outer_haar_x[108], outer_haar_y[108], x-108, y, 24, 36);
	HaarXtYt(outer_haar_x[109], outer_haar_y[109], x-144, y, 24, 36);
	HaarXtYt(outer_haar_x[110], outer_haar_y[110], x-180, y, 24, 36);
	HaarXtYt(outer_haar_x[111], outer_haar_y[111], x-168, y+12, 24, 37);
	HaarXtYt(outer_haar_x[112], outer_haar_y[112], x-132, y+12, 24, 37);
	HaarXtYt(outer_haar_x[113], outer_haar_y[113], x-96, y+12, 24, 37);
	HaarXtYt(outer_haar_x[114], outer_haar_y[114], x-144, y+24, 24, 38);
	HaarXtYt(outer_haar_x[115], outer_haar_y[115], x-120, y+24, 24, 38);
	HaarXtYt(outer_haar_x[116], outer_haar_y[116], x-168, y+36, 24, 38);
	HaarXtYt(outer_haar_x[117], outer_haar_y[117], x-96, y+24, 24, 39);
	HaarXtYt(outer_haar_x[118], outer_haar_y[118], x-132, y+36, 24, 39);
	HaarXtYt(outer_haar_x[119], outer_haar_y[119], x-168, y+48, 24, 39);
	HaarXtYt(outer_haar_x[120], outer_haar_y[120], x-168, y+60, 24, 40);
	HaarXtYt(outer_haar_x[121], outer_haar_y[121], x-132, y+48, 24, 40);
	HaarXtYt(outer_haar_x[122], outer_haar_y[122], x-96, y+36, 24, 40);
	HaarXtYt(outer_haar_x[123], outer_haar_y[123], x-156, y+72, 24, 41);
	HaarXtYt(outer_haar_x[124], outer_haar_y[124], x-96, y+48, 24, 41);
	HaarXtYt(outer_haar_x[125], outer_haar_y[125], x-120, y+60, 24, 41);
	HaarXtYt(outer_haar_x[126], outer_haar_y[126], x-156, y+84, 24, 42);
	HaarXtYt(outer_haar_x[127], outer_haar_y[127], x-84, y+48, 24, 42);
	HaarXtYt(outer_haar_x[128], outer_haar_y[128], x-120, y+72, 24, 42);
	HaarXtYt(outer_haar_x[129], outer_haar_y[129], x-120, y+84, 24, 43);
	HaarXtYt(outer_haar_x[130], outer_haar_y[130], x-84, y+60, 24, 43);
	HaarXtYt(outer_haar_x[131], outer_haar_y[131], x-144, y+108, 24, 43);
	HaarXtYt(outer_haar_x[132], outer_haar_y[132], x-84, y+72, 24, 44);
	HaarXtYt(outer_haar_x[133], outer_haar_y[133], x-108, y+96, 24, 44);
	HaarXtYt(outer_haar_x[134], outer_haar_y[134], x-132, y+120, 24, 44);
	HaarXtYt(outer_haar_x[135], outer_haar_y[135], x-72, y+72, 24, 45);
	HaarXtYt(outer_haar_x[136], outer_haar_y[136], x-96, y+96, 24, 45);
	HaarXtYt(outer_haar_x[137], outer_haar_y[137], x-120, y+120, 24, 45);
	HaarXtYt(outer_haar_x[138], outer_haar_y[138], x-120, y+132, 24, 46);
	HaarXtYt(outer_haar_x[139], outer_haar_y[139], x-96, y+108, 24, 46);
	HaarXtYt(outer_haar_x[140], outer_haar_y[140], x-72, y+84, 24, 46);
	HaarXtYt(outer_haar_x[141], outer_haar_y[141], x-108, y+144, 24, 47);
	HaarXtYt(outer_haar_x[142], outer_haar_y[142], x-60, y+84, 24, 47);
	HaarXtYt(outer_haar_x[143], outer_haar_y[143], x-84, y+120, 24, 47);
	HaarXtYt(outer_haar_x[144], outer_haar_y[144], x-72, y+120, 24, 48);
	HaarXtYt(outer_haar_x[145], outer_haar_y[145], x-48, y+84, 24, 48);
	HaarXtYt(outer_haar_x[146], outer_haar_y[146], x-84, y+156, 24, 48);
	HaarXtYt(outer_haar_x[147], outer_haar_y[147], x-48, y+96, 24, 49);
	HaarXtYt(outer_haar_x[148], outer_haar_y[148], x-60, y+120, 24, 49);
	HaarXtYt(outer_haar_x[149], outer_haar_y[149], x-72, y+156, 24, 49);
	HaarXtYt(outer_haar_x[150], outer_haar_y[150], x-36, y+96, 24, 50);
	HaarXtYt(outer_haar_x[151], outer_haar_y[151], x-48, y+132, 24, 50);
	HaarXtYt(outer_haar_x[152], outer_haar_y[152], x-60, y+168, 24, 50);
	HaarXtYt(outer_haar_x[153], outer_haar_y[153], x-48, y+168, 24, 51);
	HaarXtYt(outer_haar_x[154], outer_haar_y[154], x-36, y+132, 24, 51);
	HaarXtYt(outer_haar_x[155], outer_haar_y[155], x-24, y+96, 24, 51);
	HaarXtYt(outer_haar_x[156], outer_haar_y[156], x-36, y+168, 24, 52);
	HaarXtYt(outer_haar_x[157], outer_haar_y[157], x-24, y+120, 24, 52);
	HaarXtYt(outer_haar_x[158], outer_haar_y[158], x-24, y+144, 24, 52);
	HaarXtYt(outer_haar_x[159], outer_haar_y[159], x-12, y+96, 24, 53);
	HaarXtYt(outer_haar_x[160], outer_haar_y[160], x-12, y+132, 24, 53);
	HaarXtYt(outer_haar_x[161], outer_haar_y[161], x-12, y+168, 24, 53);
	HaarXtYt(outer_haar_x[162], outer_haar_y[162], x, y+108, 24, 54);
	HaarXtYt(outer_haar_x[163], outer_haar_y[163], x, y+144, 24, 54);
	HaarXtYt(outer_haar_x[164], outer_haar_y[164], x, y+180, 24, 54);
	HaarXtYt(outer_haar_x[165], outer_haar_y[165], x+12, y+168, 24, 55);
	HaarXtYt(outer_haar_x[166], outer_haar_y[166], x+12, y+132, 24, 55);
	HaarXtYt(outer_haar_x[167], outer_haar_y[167], x+12, y+96, 24, 55);
	HaarXtYt(outer_haar_x[168], outer_haar_y[168], x+24, y+144, 24, 56);
	HaarXtYt(outer_haar_x[169], outer_haar_y[169], x+24, y+120, 24, 56);
	HaarXtYt(outer_haar_x[170], outer_haar_y[170], x+36, y+168, 24, 56);
	HaarXtYt(outer_haar_x[171], outer_haar_y[171], x+24, y+96, 24, 57);
	HaarXtYt(outer_haar_x[172], outer_haar_y[172], x+36, y+132, 24, 57);
	HaarXtYt(outer_haar_x[173], outer_haar_y[173], x+48, y+168, 24, 57);
	HaarXtYt(outer_haar_x[174], outer_haar_y[174], x+60, y+168, 24, 58);
	HaarXtYt(outer_haar_x[175], outer_haar_y[175], x+48, y+132, 24, 58);
	HaarXtYt(outer_haar_x[176], outer_haar_y[176], x+36, y+96, 24, 58);
	HaarXtYt(outer_haar_x[177], outer_haar_y[177], x+72, y+156, 24, 59);
	HaarXtYt(outer_haar_x[178], outer_haar_y[178], x+48, y+96, 24, 59);
	HaarXtYt(outer_haar_x[179], outer_haar_y[179], x+60, y+120, 24, 59);
	HaarXtYt(outer_haar_x[180], outer_haar_y[180], x+84, y+156, 24, 60);
	HaarXtYt(outer_haar_x[181], outer_haar_y[181], x+48, y+84, 24, 60);
	HaarXtYt(outer_haar_x[182], outer_haar_y[182], x+72, y+120, 24, 60);
	HaarXtYt(outer_haar_x[183], outer_haar_y[183], x+84, y+120, 24, 61);
	HaarXtYt(outer_haar_x[184], outer_haar_y[184], x+60, y+84, 24, 61);
	HaarXtYt(outer_haar_x[185], outer_haar_y[185], x+108, y+144, 24, 61);
	HaarXtYt(outer_haar_x[186], outer_haar_y[186], x+72, y+84, 24, 62);
	HaarXtYt(outer_haar_x[187], outer_haar_y[187], x+96, y+108, 24, 62);
	HaarXtYt(outer_haar_x[188], outer_haar_y[188], x+120, y+132, 24, 62);
	HaarXtYt(outer_haar_x[189], outer_haar_y[189], x+72, y+72, 24, 63);
	HaarXtYt(outer_haar_x[190], outer_haar_y[190], x+96, y+96, 24, 63);
	HaarXtYt(outer_haar_x[191], outer_haar_y[191], x+120, y+120, 24, 63);
	HaarXtYt(outer_haar_x[192], outer_haar_y[192], x+132, y+120, 24, 64);
	HaarXtYt(outer_haar_x[193], outer_haar_y[193], x+108, y+96, 24, 64);
	HaarXtYt(outer_haar_x[194], outer_haar_y[194], x+84, y+72, 24, 64);
	HaarXtYt(outer_haar_x[195], outer_haar_y[195], x+144, y+108, 24, 65);
	HaarXtYt(outer_haar_x[196], outer_haar_y[196], x+84, y+60, 24, 65);
	HaarXtYt(outer_haar_x[197], outer_haar_y[197], x+120, y+84, 24, 65);
	HaarXtYt(outer_haar_x[198], outer_haar_y[198], x+120, y+72, 24, 66);
	HaarXtYt(outer_haar_x[199], outer_haar_y[199], x+84, y+48, 24, 66);
	HaarXtYt(outer_haar_x[200], outer_haar_y[200], x+156, y+84, 24, 66);
	HaarXtYt(outer_haar_x[201], outer_haar_y[201], x+96, y+48, 24, 67);
	HaarXtYt(outer_haar_x[202], outer_haar_y[202], x+120, y+60, 24, 67);
	HaarXtYt(outer_haar_x[203], outer_haar_y[203], x+156, y+72, 24, 67);
	HaarXtYt(outer_haar_x[204], outer_haar_y[204], x+96, y+36, 24, 68);
	HaarXtYt(outer_haar_x[205], outer_haar_y[205], x+132, y+48, 24, 68);
	HaarXtYt(outer_haar_x[206], outer_haar_y[206], x+168, y+60, 24, 68);
	HaarXtYt(outer_haar_x[207], outer_haar_y[207], x+168, y+48, 24, 69);
	HaarXtYt(outer_haar_x[208], outer_haar_y[208], x+132, y+36, 24, 69);
	HaarXtYt(outer_haar_x[209], outer_haar_y[209], x+96, y+24, 24, 69);
	HaarXtYt(outer_haar_x[210], outer_haar_y[210], x+168, y+36, 24, 70);
	HaarXtYt(outer_haar_x[211], outer_haar_y[211], x+120, y+24, 24, 70);
	HaarXtYt(outer_haar_x[212], outer_haar_y[212], x+144, y+24, 24, 70);
	HaarXtYt(outer_haar_x[213], outer_haar_y[213], x+96, y+12, 24, 71);
	HaarXtYt(outer_haar_x[214], outer_haar_y[214], x+132, y+12, 24, 71);
	HaarXtYt(outer_haar_x[215], outer_haar_y[215], x+168, y+12, 24, 71);
}

void Scarf::DescriptorResponsesGen16(int x, int y)
{
	ZeroOrientation();

	HaarXYO(center_haar_x[0], center_haar_y[0], x-16, y, 32, ori_weight[0]);
	HaarXYO(center_haar_x[1], center_haar_y[1], x, y+16, 32, ori_weight[0]);
	HaarXYO(center_haar_x[2], center_haar_y[2], x, y-16, 32, ori_weight[0]);
	HaarXYO(center_haar_x[3], center_haar_y[3], x+16, y, 32, ori_weight[0]);
	HaarXYO(center_haar_x[4], center_haar_y[4], x-32, y+16, 32, ori_weight[1]);
	HaarXYO(center_haar_x[5], center_haar_y[5], x-32, y-16, 32, ori_weight[1]);
	HaarXYO(center_haar_x[6], center_haar_y[6], x-16, y+32, 32, ori_weight[1]);
	HaarXYO(center_haar_x[7], center_haar_y[7], x-16, y-32, 32, ori_weight[1]);
	HaarXYO(center_haar_x[8], center_haar_y[8], x+16, y+32, 32, ori_weight[1]);
	HaarXYO(center_haar_x[9], center_haar_y[9], x+16, y-32, 32, ori_weight[1]);
	HaarXYO(center_haar_x[10], center_haar_y[10], x+32, y+16, 32, ori_weight[1]);
	HaarXYO(center_haar_x[11], center_haar_y[11], x+32, y-16, 32, ori_weight[1]);
	HaarXYO(center_haar_x[12], center_haar_y[12], x-48, y, 32, ori_weight[2]);
	HaarXYO(center_haar_x[13], center_haar_y[13], x, y+48, 32, ori_weight[2]);
	HaarXYO(center_haar_x[14], center_haar_y[14], x, y-48, 32, ori_weight[2]);
	HaarXYO(center_haar_x[15], center_haar_y[15], x+48, y, 32, ori_weight[2]);
	HaarXtYtO(inner_haar_x[0], inner_haar_y[0], x+64, y, 32, 0, ori_weight[5]);
	HaarXtYt(inner_haar_x[1], inner_haar_y[1], x+128, y, 32, 0);
	HaarXtYtO(inner_haar_x[2], inner_haar_y[2], x+80, y, 32, 1, ori_weight[9]);
	HaarXtYt(inner_haar_x[3], inner_haar_y[3], x+112, y-16, 32, 1);
	HaarXtYt(inner_haar_x[4], inner_haar_y[4], x+96, y-16, 32, 2);
	HaarXtYtO(inner_haar_x[5], inner_haar_y[5], x+80, y-16, 32, 2, ori_weight[10]);
	HaarXtYtO(inner_haar_x[6], inner_haar_y[6], x+64, y-16, 32, 3, ori_weight[6]);
	HaarXtYt(inner_haar_x[7], inner_haar_y[7], x+112, y-32, 32, 3);
	HaarXtYtO(inner_haar_x[8], inner_haar_y[8], x+48, y-16, 32, 4, ori_weight[3]);
	HaarXtYt(inner_haar_x[9], inner_haar_y[9], x+96, y-32, 32, 4);
	HaarXtYt(inner_haar_x[10], inner_haar_y[10], x+112, y-48, 32, 5);
	HaarXtYtO(inner_haar_x[11], inner_haar_y[11], x+64, y-32, 32, 5, ori_weight[8]);
	HaarXtYt(inner_haar_x[12], inner_haar_y[12], x+96, y-48, 32, 6);
	HaarXtYtO(inner_haar_x[13], inner_haar_y[13], x+80, y-48, 32, 6, ori_weight[11]);
	HaarXtYtO(inner_haar_x[14], inner_haar_y[14], x+48, y-32, 32, 7, ori_weight[4]);
	HaarXtYt(inner_haar_x[15], inner_haar_y[15], x+96, y-64, 32, 7);
	HaarXtYt(inner_haar_x[16], inner_haar_y[16], x+80, y-64, 32, 8);
	HaarXtYt(inner_haar_x[17], inner_haar_y[17], x+96, y-80, 32, 8);
	HaarXtYtO(inner_haar_x[18], inner_haar_y[18], x+48, y-48, 32, 9, ori_weight[7]);
	HaarXtYt(inner_haar_x[19], inner_haar_y[19], x+80, y-80, 32, 9);
	HaarXtYt(inner_haar_x[20], inner_haar_y[20], x+80, y-96, 32, 10);
	HaarXtYt(inner_haar_x[21], inner_haar_y[21], x+64, y-80, 32, 10);
	HaarXtYtO(inner_haar_x[22], inner_haar_y[22], x+32, y-48, 32, 11, ori_weight[4]);
	HaarXtYt(inner_haar_x[23], inner_haar_y[23], x+64, y-96, 32, 11);
	HaarXtYtO(inner_haar_x[24], inner_haar_y[24], x+48, y-80, 32, 12, ori_weight[11]);
	HaarXtYt(inner_haar_x[25], inner_haar_y[25], x+48, y-96, 32, 12);
	HaarXtYtO(inner_haar_x[26], inner_haar_y[26], x+32, y-64, 32, 13, ori_weight[8]);
	HaarXtYt(inner_haar_x[27], inner_haar_y[27], x+48, y-112, 32, 13);
	HaarXtYtO(inner_haar_x[28], inner_haar_y[28], x+16, y-48, 32, 14, ori_weight[3]);
	HaarXtYt(inner_haar_x[29], inner_haar_y[29], x+32, y-96, 32, 14);
	HaarXtYt(inner_haar_x[30], inner_haar_y[30], x+32, y-112, 32, 15);
	HaarXtYtO(inner_haar_x[31], inner_haar_y[31], x+16, y-64, 32, 15, ori_weight[6]);
	HaarXtYtO(inner_haar_x[32], inner_haar_y[32], x+16, y-80, 32, 16, ori_weight[10]);
	HaarXtYt(inner_haar_x[33], inner_haar_y[33], x+16, y-96, 32, 16);
	HaarXtYtO(inner_haar_x[34], inner_haar_y[34], x, y-80, 32, 17, ori_weight[9]);
	HaarXtYt(inner_haar_x[35], inner_haar_y[35], x+16, y-112, 32, 17);
	HaarXtYtO(inner_haar_x[36], inner_haar_y[36], x, y-64, 32, 18, ori_weight[5]);
	HaarXtYt(inner_haar_x[37], inner_haar_y[37], x, y-128, 32, 18);
	HaarXtYtO(inner_haar_x[38], inner_haar_y[38], x, y-96, 32, 19, ori_weight[12]);
	HaarXtYt(inner_haar_x[39], inner_haar_y[39], x-16, y-112, 32, 19);
	HaarXtYt(inner_haar_x[40], inner_haar_y[40], x-16, y-96, 32, 20);
	HaarXtYtO(inner_haar_x[41], inner_haar_y[41], x-16, y-80, 32, 20, ori_weight[10]);
	HaarXtYtO(inner_haar_x[42], inner_haar_y[42], x-16, y-64, 32, 21, ori_weight[6]);
	HaarXtYt(inner_haar_x[43], inner_haar_y[43], x-32, y-112, 32, 21);
	HaarXtYtO(inner_haar_x[44], inner_haar_y[44], x-16, y-48, 32, 22, ori_weight[3]);
	HaarXtYt(inner_haar_x[45], inner_haar_y[45], x-32, y-96, 32, 22);
	HaarXtYt(inner_haar_x[46], inner_haar_y[46], x-48, y-112, 32, 23);
	HaarXtYtO(inner_haar_x[47], inner_haar_y[47], x-32, y-64, 32, 23, ori_weight[8]);
	HaarXtYt(inner_haar_x[48], inner_haar_y[48], x-48, y-96, 32, 24);
	HaarXtYtO(inner_haar_x[49], inner_haar_y[49], x-48, y-80, 32, 24, ori_weight[11]);
	HaarXtYtO(inner_haar_x[50], inner_haar_y[50], x-32, y-48, 32, 25, ori_weight[4]);
	HaarXtYt(inner_haar_x[51], inner_haar_y[51], x-64, y-96, 32, 25);
	HaarXtYt(inner_haar_x[52], inner_haar_y[52], x-64, y-80, 32, 26);
	HaarXtYt(inner_haar_x[53], inner_haar_y[53], x-80, y-96, 32, 26);
	HaarXtYtO(inner_haar_x[54], inner_haar_y[54], x-48, y-48, 32, 27, ori_weight[7]);
	HaarXtYt(inner_haar_x[55], inner_haar_y[55], x-80, y-80, 32, 27);
	HaarXtYt(inner_haar_x[56], inner_haar_y[56], x-96, y-80, 32, 28);
	HaarXtYt(inner_haar_x[57], inner_haar_y[57], x-80, y-64, 32, 28);
	HaarXtYtO(inner_haar_x[58], inner_haar_y[58], x-48, y-32, 32, 29, ori_weight[4]);
	HaarXtYt(inner_haar_x[59], inner_haar_y[59], x-96, y-64, 32, 29);
	HaarXtYtO(inner_haar_x[60], inner_haar_y[60], x-80, y-48, 32, 30, ori_weight[11]);
	HaarXtYt(inner_haar_x[61], inner_haar_y[61], x-96, y-48, 32, 30);
	HaarXtYtO(inner_haar_x[62], inner_haar_y[62], x-64, y-32, 32, 31, ori_weight[8]);
	HaarXtYt(inner_haar_x[63], inner_haar_y[63], x-112, y-48, 32, 31);
	HaarXtYtO(inner_haar_x[64], inner_haar_y[64], x-48, y-16, 32, 32, ori_weight[3]);
	HaarXtYt(inner_haar_x[65], inner_haar_y[65], x-96, y-32, 32, 32);
	HaarXtYt(inner_haar_x[66], inner_haar_y[66], x-112, y-32, 32, 33);
	HaarXtYtO(inner_haar_x[67], inner_haar_y[67], x-64, y-16, 32, 33, ori_weight[6]);
	HaarXtYtO(inner_haar_x[68], inner_haar_y[68], x-80, y-16, 32, 34, ori_weight[10]);
	HaarXtYt(inner_haar_x[69], inner_haar_y[69], x-96, y-16, 32, 34);
	HaarXtYtO(inner_haar_x[70], inner_haar_y[70], x-80, y, 32, 35, ori_weight[9]);
	HaarXtYt(inner_haar_x[71], inner_haar_y[71], x-112, y-16, 32, 35);
	HaarXtYtO(inner_haar_x[72], inner_haar_y[72], x-64, y, 32, 36, ori_weight[5]);
	HaarXtYt(inner_haar_x[73], inner_haar_y[73], x-128, y, 32, 36);
	HaarXtYtO(inner_haar_x[74], inner_haar_y[74], x-96, y, 32, 37, ori_weight[12]);
	HaarXtYt(inner_haar_x[75], inner_haar_y[75], x-112, y+16, 32, 37);
	HaarXtYt(inner_haar_x[76], inner_haar_y[76], x-96, y+16, 32, 38);
	HaarXtYtO(inner_haar_x[77], inner_haar_y[77], x-80, y+16, 32, 38, ori_weight[10]);
	HaarXtYtO(inner_haar_x[78], inner_haar_y[78], x-64, y+16, 32, 39, ori_weight[6]);
	HaarXtYt(inner_haar_x[79], inner_haar_y[79], x-112, y+32, 32, 39);
	HaarXtYtO(inner_haar_x[80], inner_haar_y[80], x-48, y+16, 32, 40, ori_weight[3]);
	HaarXtYt(inner_haar_x[81], inner_haar_y[81], x-96, y+32, 32, 40);
	HaarXtYt(inner_haar_x[82], inner_haar_y[82], x-112, y+48, 32, 41);
	HaarXtYtO(inner_haar_x[83], inner_haar_y[83], x-64, y+32, 32, 41, ori_weight[8]);
	HaarXtYt(inner_haar_x[84], inner_haar_y[84], x-96, y+48, 32, 42);
	HaarXtYtO(inner_haar_x[85], inner_haar_y[85], x-80, y+48, 32, 42, ori_weight[11]);
	HaarXtYtO(inner_haar_x[86], inner_haar_y[86], x-48, y+32, 32, 43, ori_weight[4]);
	HaarXtYt(inner_haar_x[87], inner_haar_y[87], x-96, y+64, 32, 43);
	HaarXtYt(inner_haar_x[88], inner_haar_y[88], x-80, y+64, 32, 44);
	HaarXtYt(inner_haar_x[89], inner_haar_y[89], x-96, y+80, 32, 44);
	HaarXtYtO(inner_haar_x[90], inner_haar_y[90], x-48, y+48, 32, 45, ori_weight[7]);
	HaarXtYt(inner_haar_x[91], inner_haar_y[91], x-80, y+80, 32, 45);
	HaarXtYt(inner_haar_x[92], inner_haar_y[92], x-80, y+96, 32, 46);
	HaarXtYt(inner_haar_x[93], inner_haar_y[93], x-64, y+80, 32, 46);
	HaarXtYtO(inner_haar_x[94], inner_haar_y[94], x-32, y+48, 32, 47, ori_weight[4]);
	HaarXtYt(inner_haar_x[95], inner_haar_y[95], x-64, y+96, 32, 47);
	HaarXtYtO(inner_haar_x[96], inner_haar_y[96], x-48, y+80, 32, 48, ori_weight[11]);
	HaarXtYt(inner_haar_x[97], inner_haar_y[97], x-48, y+96, 32, 48);
	HaarXtYtO(inner_haar_x[98], inner_haar_y[98], x-32, y+64, 32, 49, ori_weight[8]);
	HaarXtYt(inner_haar_x[99], inner_haar_y[99], x-48, y+112, 32, 49);
	HaarXtYtO(inner_haar_x[100], inner_haar_y[100], x-16, y+48, 32, 50, ori_weight[3]);
	HaarXtYt(inner_haar_x[101], inner_haar_y[101], x-32, y+96, 32, 50);
	HaarXtYt(inner_haar_x[102], inner_haar_y[102], x-32, y+112, 32, 51);
	HaarXtYtO(inner_haar_x[103], inner_haar_y[103], x-16, y+64, 32, 51, ori_weight[6]);
	HaarXtYtO(inner_haar_x[104], inner_haar_y[104], x-16, y+80, 32, 52, ori_weight[10]);
	HaarXtYt(inner_haar_x[105], inner_haar_y[105], x-16, y+96, 32, 52);
	HaarXtYtO(inner_haar_x[106], inner_haar_y[106], x, y+80, 32, 53, ori_weight[9]);
	HaarXtYt(inner_haar_x[107], inner_haar_y[107], x-16, y+112, 32, 53);
	HaarXtYtO(inner_haar_x[108], inner_haar_y[108], x, y+64, 32, 54, ori_weight[5]);
	HaarXtYt(inner_haar_x[109], inner_haar_y[109], x, y+128, 32, 54);
	HaarXtYtO(inner_haar_x[110], inner_haar_y[110], x, y+96, 32, 55, ori_weight[12]);
	HaarXtYt(inner_haar_x[111], inner_haar_y[111], x+16, y+112, 32, 55);
	HaarXtYt(inner_haar_x[112], inner_haar_y[112], x+16, y+96, 32, 56);
	HaarXtYtO(inner_haar_x[113], inner_haar_y[113], x+16, y+80, 32, 56, ori_weight[10]);
	HaarXtYtO(inner_haar_x[114], inner_haar_y[114], x+16, y+64, 32, 57, ori_weight[6]);
	HaarXtYt(inner_haar_x[115], inner_haar_y[115], x+32, y+112, 32, 57);
	HaarXtYtO(inner_haar_x[116], inner_haar_y[116], x+16, y+48, 32, 58, ori_weight[3]);
	HaarXtYt(inner_haar_x[117], inner_haar_y[117], x+32, y+96, 32, 58);
	HaarXtYt(inner_haar_x[118], inner_haar_y[118], x+48, y+112, 32, 59);
	HaarXtYtO(inner_haar_x[119], inner_haar_y[119], x+32, y+64, 32, 59, ori_weight[8]);
	HaarXtYt(inner_haar_x[120], inner_haar_y[120], x+48, y+96, 32, 60);
	HaarXtYtO(inner_haar_x[121], inner_haar_y[121], x+48, y+80, 32, 60, ori_weight[11]);
	HaarXtYtO(inner_haar_x[122], inner_haar_y[122], x+32, y+48, 32, 61, ori_weight[4]);
	HaarXtYt(inner_haar_x[123], inner_haar_y[123], x+64, y+96, 32, 61);
	HaarXtYt(inner_haar_x[124], inner_haar_y[124], x+64, y+80, 32, 62);
	HaarXtYt(inner_haar_x[125], inner_haar_y[125], x+80, y+96, 32, 62);
	HaarXtYtO(inner_haar_x[126], inner_haar_y[126], x+48, y+48, 32, 63, ori_weight[7]);
	HaarXtYt(inner_haar_x[127], inner_haar_y[127], x+80, y+80, 32, 63);
	HaarXtYt(inner_haar_x[128], inner_haar_y[128], x+96, y+80, 32, 64);
	HaarXtYt(inner_haar_x[129], inner_haar_y[129], x+80, y+64, 32, 64);
	HaarXtYtO(inner_haar_x[130], inner_haar_y[130], x+48, y+32, 32, 65, ori_weight[4]);
	HaarXtYt(inner_haar_x[131], inner_haar_y[131], x+96, y+64, 32, 65);
	HaarXtYtO(inner_haar_x[132], inner_haar_y[132], x+80, y+48, 32, 66, ori_weight[11]);
	HaarXtYt(inner_haar_x[133], inner_haar_y[133], x+96, y+48, 32, 66);
	HaarXtYtO(inner_haar_x[134], inner_haar_y[134], x+64, y+32, 32, 67, ori_weight[8]);
	HaarXtYt(inner_haar_x[135], inner_haar_y[135], x+112, y+48, 32, 67);
	HaarXtYtO(inner_haar_x[136], inner_haar_y[136], x+48, y+16, 32, 68, ori_weight[3]);
	HaarXtYt(inner_haar_x[137], inner_haar_y[137], x+96, y+32, 32, 68);
	HaarXtYt(inner_haar_x[138], inner_haar_y[138], x+112, y+32, 32, 69);
	HaarXtYtO(inner_haar_x[139], inner_haar_y[139], x+64, y+16, 32, 69, ori_weight[6]);
	HaarXtYtO(inner_haar_x[140], inner_haar_y[140], x+80, y+16, 32, 70, ori_weight[10]);
	HaarXtYt(inner_haar_x[141], inner_haar_y[141], x+96, y+16, 32, 70);
	HaarXtYtO(inner_haar_x[142], inner_haar_y[142], x+96, y, 32, 71, ori_weight[12]);
	HaarXtYt(inner_haar_x[143], inner_haar_y[143], x+112, y+16, 32, 71);

	HaarXtYt(outer_haar_x[0], outer_haar_y[0], x+144, y, 32, 0);
	HaarXtYt(outer_haar_x[1], outer_haar_y[1], x+192, y, 32, 0);
	HaarXtYt(outer_haar_x[2], outer_haar_y[2], x+240, y, 32, 0);
	HaarXtYt(outer_haar_x[3], outer_haar_y[3], x+224, y-16, 32, 1);
	HaarXtYt(outer_haar_x[4], outer_haar_y[4], x+176, y-16, 32, 1);
	HaarXtYt(outer_haar_x[5], outer_haar_y[5], x+128, y-16, 32, 1);
	HaarXtYt(outer_haar_x[6], outer_haar_y[6], x+192, y-32, 32, 2);
	HaarXtYt(outer_haar_x[7], outer_haar_y[7], x+160, y-32, 32, 2);
	HaarXtYt(outer_haar_x[8], outer_haar_y[8], x+224, y-48, 32, 2);
	HaarXtYt(outer_haar_x[9], outer_haar_y[9], x+128, y-32, 32, 3);
	HaarXtYt(outer_haar_x[10], outer_haar_y[10], x+176, y-48, 32, 3);
	HaarXtYt(outer_haar_x[11], outer_haar_y[11], x+224, y-64, 32, 3);
	HaarXtYt(outer_haar_x[12], outer_haar_y[12], x+224, y-80, 32, 4);
	HaarXtYt(outer_haar_x[13], outer_haar_y[13], x+176, y-64, 32, 4);
	HaarXtYt(outer_haar_x[14], outer_haar_y[14], x+128, y-48, 32, 4);
	HaarXtYt(outer_haar_x[15], outer_haar_y[15], x+208, y-96, 32, 5);
	HaarXtYt(outer_haar_x[16], outer_haar_y[16], x+128, y-64, 32, 5);
	HaarXtYt(outer_haar_x[17], outer_haar_y[17], x+160, y-80, 32, 5);
	HaarXtYt(outer_haar_x[18], outer_haar_y[18], x+208, y-112, 32, 6);
	HaarXtYt(outer_haar_x[19], outer_haar_y[19], x+112, y-64, 32, 6);
	HaarXtYt(outer_haar_x[20], outer_haar_y[20], x+160, y-96, 32, 6);
	HaarXtYt(outer_haar_x[21], outer_haar_y[21], x+160, y-112, 32, 7);
	HaarXtYt(outer_haar_x[22], outer_haar_y[22], x+112, y-80, 32, 7);
	HaarXtYt(outer_haar_x[23], outer_haar_y[23], x+192, y-144, 32, 7);
	HaarXtYt(outer_haar_x[24], outer_haar_y[24], x+112, y-96, 32, 8);
	HaarXtYt(outer_haar_x[25], outer_haar_y[25], x+144, y-128, 32, 8);
	HaarXtYt(outer_haar_x[26], outer_haar_y[26], x+176, y-160, 32, 8);
	HaarXtYt(outer_haar_x[27], outer_haar_y[27], x+96, y-96, 32, 9);
	HaarXtYt(outer_haar_x[28], outer_haar_y[28], x+128, y-128, 32, 9);
	HaarXtYt(outer_haar_x[29], outer_haar_y[29], x+160, y-160, 32, 9);
	HaarXtYt(outer_haar_x[30], outer_haar_y[30], x+160, y-176, 32, 10);
	HaarXtYt(outer_haar_x[31], outer_haar_y[31], x+128, y-144, 32, 10);
	HaarXtYt(outer_haar_x[32], outer_haar_y[32], x+96, y-112, 32, 10);
	HaarXtYt(outer_haar_x[33], outer_haar_y[33], x+144, y-192, 32, 11);
	HaarXtYt(outer_haar_x[34], outer_haar_y[34], x+80, y-112, 32, 11);
	HaarXtYt(outer_haar_x[35], outer_haar_y[35], x+112, y-160, 32, 11);
	HaarXtYt(outer_haar_x[36], outer_haar_y[36], x+96, y-160, 32, 12);
	HaarXtYt(outer_haar_x[37], outer_haar_y[37], x+64, y-112, 32, 12);
	HaarXtYt(outer_haar_x[38], outer_haar_y[38], x+112, y-208, 32, 12);
	HaarXtYt(outer_haar_x[39], outer_haar_y[39], x+64, y-128, 32, 13);
	HaarXtYt(outer_haar_x[40], outer_haar_y[40], x+80, y-160, 32, 13);
	HaarXtYt(outer_haar_x[41], outer_haar_y[41], x+96, y-208, 32, 13);
	HaarXtYt(outer_haar_x[42], outer_haar_y[42], x+48, y-128, 32, 14);
	HaarXtYt(outer_haar_x[43], outer_haar_y[43], x+64, y-176, 32, 14);
	HaarXtYt(outer_haar_x[44], outer_haar_y[44], x+80, y-224, 32, 14);
	HaarXtYt(outer_haar_x[45], outer_haar_y[45], x+64, y-224, 32, 15);
	HaarXtYt(outer_haar_x[46], outer_haar_y[46], x+48, y-176, 32, 15);
	HaarXtYt(outer_haar_x[47], outer_haar_y[47], x+32, y-128, 32, 15);
	HaarXtYt(outer_haar_x[48], outer_haar_y[48], x+48, y-224, 32, 16);
	HaarXtYt(outer_haar_x[49], outer_haar_y[49], x+32, y-160, 32, 16);
	HaarXtYt(outer_haar_x[50], outer_haar_y[50], x+32, y-192, 32, 16);
	HaarXtYt(outer_haar_x[51], outer_haar_y[51], x+16, y-128, 32, 17);
	HaarXtYt(outer_haar_x[52], outer_haar_y[52], x+16, y-176, 32, 17);
	HaarXtYt(outer_haar_x[53], outer_haar_y[53], x+16, y-224, 32, 17);
	HaarXtYt(outer_haar_x[54], outer_haar_y[54], x, y-144, 32, 18);
	HaarXtYt(outer_haar_x[55], outer_haar_y[55], x, y-192, 32, 18);
	HaarXtYt(outer_haar_x[56], outer_haar_y[56], x, y-240, 32, 18);
	HaarXtYt(outer_haar_x[57], outer_haar_y[57], x-16, y-224, 32, 19);
	HaarXtYt(outer_haar_x[58], outer_haar_y[58], x-16, y-176, 32, 19);
	HaarXtYt(outer_haar_x[59], outer_haar_y[59], x-16, y-128, 32, 19);
	HaarXtYt(outer_haar_x[60], outer_haar_y[60], x-32, y-192, 32, 20);
	HaarXtYt(outer_haar_x[61], outer_haar_y[61], x-32, y-160, 32, 20);
	HaarXtYt(outer_haar_x[62], outer_haar_y[62], x-48, y-224, 32, 20);
	HaarXtYt(outer_haar_x[63], outer_haar_y[63], x-32, y-128, 32, 21);
	HaarXtYt(outer_haar_x[64], outer_haar_y[64], x-48, y-176, 32, 21);
	HaarXtYt(outer_haar_x[65], outer_haar_y[65], x-64, y-224, 32, 21);
	HaarXtYt(outer_haar_x[66], outer_haar_y[66], x-80, y-224, 32, 22);
	HaarXtYt(outer_haar_x[67], outer_haar_y[67], x-64, y-176, 32, 22);
	HaarXtYt(outer_haar_x[68], outer_haar_y[68], x-48, y-128, 32, 22);
	HaarXtYt(outer_haar_x[69], outer_haar_y[69], x-96, y-208, 32, 23);
	HaarXtYt(outer_haar_x[70], outer_haar_y[70], x-64, y-128, 32, 23);
	HaarXtYt(outer_haar_x[71], outer_haar_y[71], x-80, y-160, 32, 23);
	HaarXtYt(outer_haar_x[72], outer_haar_y[72], x-112, y-208, 32, 24);
	HaarXtYt(outer_haar_x[73], outer_haar_y[73], x-64, y-112, 32, 24);
	HaarXtYt(outer_haar_x[74], outer_haar_y[74], x-96, y-160, 32, 24);
	HaarXtYt(outer_haar_x[75], outer_haar_y[75], x-112, y-160, 32, 25);
	HaarXtYt(outer_haar_x[76], outer_haar_y[76], x-80, y-112, 32, 25);
	HaarXtYt(outer_haar_x[77], outer_haar_y[77], x-144, y-192, 32, 25);
	HaarXtYt(outer_haar_x[78], outer_haar_y[78], x-96, y-112, 32, 26);
	HaarXtYt(outer_haar_x[79], outer_haar_y[79], x-128, y-144, 32, 26);
	HaarXtYt(outer_haar_x[80], outer_haar_y[80], x-160, y-176, 32, 26);
	HaarXtYt(outer_haar_x[81], outer_haar_y[81], x-96, y-96, 32, 27);
	HaarXtYt(outer_haar_x[82], outer_haar_y[82], x-128, y-128, 32, 27);
	HaarXtYt(outer_haar_x[83], outer_haar_y[83], x-160, y-160, 32, 27);
	HaarXtYt(outer_haar_x[84], outer_haar_y[84], x-176, y-160, 32, 28);
	HaarXtYt(outer_haar_x[85], outer_haar_y[85], x-144, y-128, 32, 28);
	HaarXtYt(outer_haar_x[86], outer_haar_y[86], x-112, y-96, 32, 28);
	HaarXtYt(outer_haar_x[87], outer_haar_y[87], x-192, y-144, 32, 29);
	HaarXtYt(outer_haar_x[88], outer_haar_y[88], x-112, y-80, 32, 29);
	HaarXtYt(outer_haar_x[89], outer_haar_y[89], x-160, y-112, 32, 29);
	HaarXtYt(outer_haar_x[90], outer_haar_y[90], x-160, y-96, 32, 30);
	HaarXtYt(outer_haar_x[91], outer_haar_y[91], x-112, y-64, 32, 30);
	HaarXtYt(outer_haar_x[92], outer_haar_y[92], x-208, y-112, 32, 30);
	HaarXtYt(outer_haar_x[93], outer_haar_y[93], x-128, y-64, 32, 31);
	HaarXtYt(outer_haar_x[94], outer_haar_y[94], x-160, y-80, 32, 31);
	HaarXtYt(outer_haar_x[95], outer_haar_y[95], x-208, y-96, 32, 31);
	HaarXtYt(outer_haar_x[96], outer_haar_y[96], x-128, y-48, 32, 32);
	HaarXtYt(outer_haar_x[97], outer_haar_y[97], x-176, y-64, 32, 32);
	HaarXtYt(outer_haar_x[98], outer_haar_y[98], x-224, y-80, 32, 32);
	HaarXtYt(outer_haar_x[99], outer_haar_y[99], x-224, y-64, 32, 33);
	HaarXtYt(outer_haar_x[100], outer_haar_y[100], x-176, y-48, 32, 33);
	HaarXtYt(outer_haar_x[101], outer_haar_y[101], x-128, y-32, 32, 33);
	HaarXtYt(outer_haar_x[102], outer_haar_y[102], x-224, y-48, 32, 34);
	HaarXtYt(outer_haar_x[103], outer_haar_y[103], x-160, y-32, 32, 34);
	HaarXtYt(outer_haar_x[104], outer_haar_y[104], x-192, y-32, 32, 34);
	HaarXtYt(outer_haar_x[105], outer_haar_y[105], x-128, y-16, 32, 35);
	HaarXtYt(outer_haar_x[106], outer_haar_y[106], x-176, y-16, 32, 35);
	HaarXtYt(outer_haar_x[107], outer_haar_y[107], x-224, y-16, 32, 35);
	HaarXtYt(outer_haar_x[108], outer_haar_y[108], x-144, y, 32, 36);
	HaarXtYt(outer_haar_x[109], outer_haar_y[109], x-192, y, 32, 36);
	HaarXtYt(outer_haar_x[110], outer_haar_y[110], x-240, y, 32, 36);
	HaarXtYt(outer_haar_x[111], outer_haar_y[111], x-224, y+16, 32, 37);
	HaarXtYt(outer_haar_x[112], outer_haar_y[112], x-176, y+16, 32, 37);
	HaarXtYt(outer_haar_x[113], outer_haar_y[113], x-128, y+16, 32, 37);
	HaarXtYt(outer_haar_x[114], outer_haar_y[114], x-192, y+32, 32, 38);
	HaarXtYt(outer_haar_x[115], outer_haar_y[115], x-160, y+32, 32, 38);
	HaarXtYt(outer_haar_x[116], outer_haar_y[116], x-224, y+48, 32, 38);
	HaarXtYt(outer_haar_x[117], outer_haar_y[117], x-128, y+32, 32, 39);
	HaarXtYt(outer_haar_x[118], outer_haar_y[118], x-176, y+48, 32, 39);
	HaarXtYt(outer_haar_x[119], outer_haar_y[119], x-224, y+64, 32, 39);
	HaarXtYt(outer_haar_x[120], outer_haar_y[120], x-224, y+80, 32, 40);
	HaarXtYt(outer_haar_x[121], outer_haar_y[121], x-176, y+64, 32, 40);
	HaarXtYt(outer_haar_x[122], outer_haar_y[122], x-128, y+48, 32, 40);
	HaarXtYt(outer_haar_x[123], outer_haar_y[123], x-208, y+96, 32, 41);
	HaarXtYt(outer_haar_x[124], outer_haar_y[124], x-128, y+64, 32, 41);
	HaarXtYt(outer_haar_x[125], outer_haar_y[125], x-160, y+80, 32, 41);
	HaarXtYt(outer_haar_x[126], outer_haar_y[126], x-208, y+112, 32, 42);
	HaarXtYt(outer_haar_x[127], outer_haar_y[127], x-112, y+64, 32, 42);
	HaarXtYt(outer_haar_x[128], outer_haar_y[128], x-160, y+96, 32, 42);
	HaarXtYt(outer_haar_x[129], outer_haar_y[129], x-160, y+112, 32, 43);
	HaarXtYt(outer_haar_x[130], outer_haar_y[130], x-112, y+80, 32, 43);
	HaarXtYt(outer_haar_x[131], outer_haar_y[131], x-192, y+144, 32, 43);
	HaarXtYt(outer_haar_x[132], outer_haar_y[132], x-112, y+96, 32, 44);
	HaarXtYt(outer_haar_x[133], outer_haar_y[133], x-144, y+128, 32, 44);
	HaarXtYt(outer_haar_x[134], outer_haar_y[134], x-176, y+160, 32, 44);
	HaarXtYt(outer_haar_x[135], outer_haar_y[135], x-96, y+96, 32, 45);
	HaarXtYt(outer_haar_x[136], outer_haar_y[136], x-128, y+128, 32, 45);
	HaarXtYt(outer_haar_x[137], outer_haar_y[137], x-160, y+160, 32, 45);
	HaarXtYt(outer_haar_x[138], outer_haar_y[138], x-160, y+176, 32, 46);
	HaarXtYt(outer_haar_x[139], outer_haar_y[139], x-128, y+144, 32, 46);
	HaarXtYt(outer_haar_x[140], outer_haar_y[140], x-96, y+112, 32, 46);
	HaarXtYt(outer_haar_x[141], outer_haar_y[141], x-144, y+192, 32, 47);
	HaarXtYt(outer_haar_x[142], outer_haar_y[142], x-80, y+112, 32, 47);
	HaarXtYt(outer_haar_x[143], outer_haar_y[143], x-112, y+160, 32, 47);
	HaarXtYt(outer_haar_x[144], outer_haar_y[144], x-96, y+160, 32, 48);
	HaarXtYt(outer_haar_x[145], outer_haar_y[145], x-64, y+112, 32, 48);
	HaarXtYt(outer_haar_x[146], outer_haar_y[146], x-112, y+208, 32, 48);
	HaarXtYt(outer_haar_x[147], outer_haar_y[147], x-64, y+128, 32, 49);
	HaarXtYt(outer_haar_x[148], outer_haar_y[148], x-80, y+160, 32, 49);
	HaarXtYt(outer_haar_x[149], outer_haar_y[149], x-96, y+208, 32, 49);
	HaarXtYt(outer_haar_x[150], outer_haar_y[150], x-48, y+128, 32, 50);
	HaarXtYt(outer_haar_x[151], outer_haar_y[151], x-64, y+176, 32, 50);
	HaarXtYt(outer_haar_x[152], outer_haar_y[152], x-80, y+224, 32, 50);
	HaarXtYt(outer_haar_x[153], outer_haar_y[153], x-64, y+224, 32, 51);
	HaarXtYt(outer_haar_x[154], outer_haar_y[154], x-48, y+176, 32, 51);
	HaarXtYt(outer_haar_x[155], outer_haar_y[155], x-32, y+128, 32, 51);
	HaarXtYt(outer_haar_x[156], outer_haar_y[156], x-48, y+224, 32, 52);
	HaarXtYt(outer_haar_x[157], outer_haar_y[157], x-32, y+160, 32, 52);
	HaarXtYt(outer_haar_x[158], outer_haar_y[158], x-32, y+192, 32, 52);
	HaarXtYt(outer_haar_x[159], outer_haar_y[159], x-16, y+128, 32, 53);
	HaarXtYt(outer_haar_x[160], outer_haar_y[160], x-16, y+176, 32, 53);
	HaarXtYt(outer_haar_x[161], outer_haar_y[161], x-16, y+224, 32, 53);
	HaarXtYt(outer_haar_x[162], outer_haar_y[162], x, y+144, 32, 54);
	HaarXtYt(outer_haar_x[163], outer_haar_y[163], x, y+192, 32, 54);
	HaarXtYt(outer_haar_x[164], outer_haar_y[164], x, y+240, 32, 54);
	HaarXtYt(outer_haar_x[165], outer_haar_y[165], x+16, y+224, 32, 55);
	HaarXtYt(outer_haar_x[166], outer_haar_y[166], x+16, y+176, 32, 55);
	HaarXtYt(outer_haar_x[167], outer_haar_y[167], x+16, y+128, 32, 55);
	HaarXtYt(outer_haar_x[168], outer_haar_y[168], x+32, y+192, 32, 56);
	HaarXtYt(outer_haar_x[169], outer_haar_y[169], x+32, y+160, 32, 56);
	HaarXtYt(outer_haar_x[170], outer_haar_y[170], x+48, y+224, 32, 56);
	HaarXtYt(outer_haar_x[171], outer_haar_y[171], x+32, y+128, 32, 57);
	HaarXtYt(outer_haar_x[172], outer_haar_y[172], x+48, y+176, 32, 57);
	HaarXtYt(outer_haar_x[173], outer_haar_y[173], x+64, y+224, 32, 57);
	HaarXtYt(outer_haar_x[174], outer_haar_y[174], x+80, y+224, 32, 58);
	HaarXtYt(outer_haar_x[175], outer_haar_y[175], x+64, y+176, 32, 58);
	HaarXtYt(outer_haar_x[176], outer_haar_y[176], x+48, y+128, 32, 58);
	HaarXtYt(outer_haar_x[177], outer_haar_y[177], x+96, y+208, 32, 59);
	HaarXtYt(outer_haar_x[178], outer_haar_y[178], x+64, y+128, 32, 59);
	HaarXtYt(outer_haar_x[179], outer_haar_y[179], x+80, y+160, 32, 59);
	HaarXtYt(outer_haar_x[180], outer_haar_y[180], x+112, y+208, 32, 60);
	HaarXtYt(outer_haar_x[181], outer_haar_y[181], x+64, y+112, 32, 60);
	HaarXtYt(outer_haar_x[182], outer_haar_y[182], x+96, y+160, 32, 60);
	HaarXtYt(outer_haar_x[183], outer_haar_y[183], x+112, y+160, 32, 61);
	HaarXtYt(outer_haar_x[184], outer_haar_y[184], x+80, y+112, 32, 61);
	HaarXtYt(outer_haar_x[185], outer_haar_y[185], x+144, y+192, 32, 61);
	HaarXtYt(outer_haar_x[186], outer_haar_y[186], x+96, y+112, 32, 62);
	HaarXtYt(outer_haar_x[187], outer_haar_y[187], x+128, y+144, 32, 62);
	HaarXtYt(outer_haar_x[188], outer_haar_y[188], x+160, y+176, 32, 62);
	HaarXtYt(outer_haar_x[189], outer_haar_y[189], x+96, y+96, 32, 63);
	HaarXtYt(outer_haar_x[190], outer_haar_y[190], x+128, y+128, 32, 63);
	HaarXtYt(outer_haar_x[191], outer_haar_y[191], x+160, y+160, 32, 63);
	HaarXtYt(outer_haar_x[192], outer_haar_y[192], x+176, y+160, 32, 64);
	HaarXtYt(outer_haar_x[193], outer_haar_y[193], x+144, y+128, 32, 64);
	HaarXtYt(outer_haar_x[194], outer_haar_y[194], x+112, y+96, 32, 64);
	HaarXtYt(outer_haar_x[195], outer_haar_y[195], x+192, y+144, 32, 65);
	HaarXtYt(outer_haar_x[196], outer_haar_y[196], x+112, y+80, 32, 65);
	HaarXtYt(outer_haar_x[197], outer_haar_y[197], x+160, y+112, 32, 65);
	HaarXtYt(outer_haar_x[198], outer_haar_y[198], x+160, y+96, 32, 66);
	HaarXtYt(outer_haar_x[199], outer_haar_y[199], x+112, y+64, 32, 66);
	HaarXtYt(outer_haar_x[200], outer_haar_y[200], x+208, y+112, 32, 66);
	HaarXtYt(outer_haar_x[201], outer_haar_y[201], x+128, y+64, 32, 67);
	HaarXtYt(outer_haar_x[202], outer_haar_y[202], x+160, y+80, 32, 67);
	HaarXtYt(outer_haar_x[203], outer_haar_y[203], x+208, y+96, 32, 67);
	HaarXtYt(outer_haar_x[204], outer_haar_y[204], x+128, y+48, 32, 68);
	HaarXtYt(outer_haar_x[205], outer_haar_y[205], x+176, y+64, 32, 68);
	HaarXtYt(outer_haar_x[206], outer_haar_y[206], x+224, y+80, 32, 68);
	HaarXtYt(outer_haar_x[207], outer_haar_y[207], x+224, y+64, 32, 69);
	HaarXtYt(outer_haar_x[208], outer_haar_y[208], x+176, y+48, 32, 69);
	HaarXtYt(outer_haar_x[209], outer_haar_y[209], x+128, y+32, 32, 69);
	HaarXtYt(outer_haar_x[210], outer_haar_y[210], x+224, y+48, 32, 70);
	HaarXtYt(outer_haar_x[211], outer_haar_y[211], x+160, y+32, 32, 70);
	HaarXtYt(outer_haar_x[212], outer_haar_y[212], x+192, y+32, 32, 70);
	HaarXtYt(outer_haar_x[213], outer_haar_y[213], x+128, y+16, 32, 71);
	HaarXtYt(outer_haar_x[214], outer_haar_y[214], x+176, y+16, 32, 71);
	HaarXtYt(outer_haar_x[215], outer_haar_y[215], x+224, y+16, 32, 71);
}

int Scarf::DescriptorDistanceSAD(uint8_t *desc1, uint8_t *desc2)
{
  uint16_t sums[8];
  __m128i sum;

  __m128i diff0 = _mm_sad_epu8(_mm_loadu_si128((__m128i*)&desc1[0]),_mm_loadu_si128((__m128i*)&desc2[0]));
  __m128i diff1 = _mm_sad_epu8(_mm_loadu_si128((__m128i*)&desc1[16]),_mm_loadu_si128((__m128i*)&desc2[16]));
  __m128i diff2 = _mm_sad_epu8(_mm_loadu_si128((__m128i*)&desc1[32]),_mm_loadu_si128((__m128i*)&desc2[32]));
  __m128i diff3 = _mm_sad_epu8(_mm_loadu_si128((__m128i*)&desc1[48]),_mm_loadu_si128((__m128i*)&desc2[48]));

  sum = _mm_adds_epu16(diff0, diff1);
  sum = _mm_adds_epu16(sum, diff2);
  sum = _mm_adds_epu16(sum, diff3);

  _mm_storeu_si128((__m128i*)&sums, sum);

  return (sums[0] + sums[4]);
}
